{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "dgBTU57OWYI0"
   },
   "source": [
    "# Install Library\n",
    "\n",
    "[RDKit ](https://github.com/rdkit/rdkit)\n",
    "\n",
    "[DGL](https://github.com/dmlc/dgl/)\n",
    "\n",
    "[DGL-LifeSci](https://github.com/awslabs/dgl-lifesci)\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "hidden": true,
    "id": "EOF1QxeqhajG"
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "!pip install rdkit-pypi\n",
    "!pip install dgllife\n",
    "!pip install --pre dgl-cu113 dglgo -f https://data.dgl.ai/wheels-test/repo.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "xtojkovzWYI2"
   },
   "source": [
    "# Import Library"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "background_save": true
    },
    "hidden": true,
    "id": "NQ4wctgKhajH",
    "outputId": "b68f061d-e011-4367-8bff-68156f17b181"
   },
   "outputs": [],
   "source": [
    "import dgl \n",
    "import sys\n",
    "import torch\n",
    "import random\n",
    "import cv2\n",
    "import statistics\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import torch.nn as nn\n",
    "import matplotlib.pyplot as plt\n",
    "import torch.optim as optim\n",
    "\n",
    "from tensorflow.keras.utils import to_categorical\n",
    "from dgllife.model import MLPPredictor\n",
    "from dgllife.utils import smiles_to_bigraph, CanonicalAtomFeaturizer, AttentiveFPAtomFeaturizer\n",
    "from torch.utils.data import DataLoader, Dataset\n",
    "from tqdm.notebook import tqdm, trange\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from utils.general import DATASET, get_dataset, separate_active_and_inactive_data, get_embedding_vector_class, count_lablel,data_generator\n",
    "from utils.gcn_pre_trained import get_tox21_model\n",
    "from model.heterogeneous_siamese_tox21 import siamese_model_attentiveFp_tox21, siamese_model_Canonical_tox21\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "1RVgRpTmQ5rp"
   },
   "source": [
    "# Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hidden": true,
    "id": "KICtNTtqzNhy"
   },
   "outputs": [],
   "source": [
    "cache_path='./tox21_dglgraph.bin'\n",
    "\n",
    "df = get_dataset(\"tox21\")\n",
    "id = df['mol_id']\n",
    "df = df.drop(columns=['mol_id'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "hidden": true,
    "id": "m_nAHT_WhajK"
   },
   "outputs": [],
   "source": [
    "tox21_tasks = df.columns.values[:12].tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 485
    },
    "hidden": true,
    "id": "VGJ8QgXwzNh0",
    "outputId": "9db78d6a-83cc-49c2-c591-1c3349030b48"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NR-AR</th>\n",
       "      <th>NR-AR-LBD</th>\n",
       "      <th>NR-AhR</th>\n",
       "      <th>NR-Aromatase</th>\n",
       "      <th>NR-ER</th>\n",
       "      <th>NR-ER-LBD</th>\n",
       "      <th>NR-PPAR-gamma</th>\n",
       "      <th>SR-ARE</th>\n",
       "      <th>SR-ATAD5</th>\n",
       "      <th>SR-HSE</th>\n",
       "      <th>SR-MMP</th>\n",
       "      <th>SR-p53</th>\n",
       "      <th>smiles</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CCOc1ccc2nc(S(N)(=O)=O)sc2c1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CCN1C(=O)NC(c2ccccc2)C1=O</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CC[C@]1(O)CC[C@H]2[C@@H]3CCC4=CCCC[C@@H]4[C@H]...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CCCN(CC)C(CC)C(=O)Nc1c(C)cccc1C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CC(O)(P(=O)(O)O)P(=O)(O)O</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7826</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CCOc1nc2cccc(C(=O)O)c2n1Cc1ccc(-c2ccccc2-c2nnn...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7827</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7828</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7829</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7830</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>COc1ccc2c(c1OC)CN1CCc3cc4c(cc3C1C2)OCO4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7831 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      NR-AR  NR-AR-LBD  NR-AhR  NR-Aromatase  NR-ER  NR-ER-LBD  NR-PPAR-gamma  \\\n",
       "0       0.0        0.0     1.0           NaN    NaN        0.0            0.0   \n",
       "1       0.0        0.0     0.0           0.0    0.0        0.0            0.0   \n",
       "2       NaN        NaN     NaN           NaN    NaN        NaN            NaN   \n",
       "3       0.0        0.0     0.0           0.0    0.0        0.0            0.0   \n",
       "4       0.0        0.0     0.0           0.0    0.0        0.0            0.0   \n",
       "...     ...        ...     ...           ...    ...        ...            ...   \n",
       "7826    NaN        NaN     NaN           NaN    NaN        NaN            NaN   \n",
       "7827    1.0        1.0     0.0           0.0    1.0        0.0            NaN   \n",
       "7828    1.0        1.0     0.0           0.0    1.0        1.0            0.0   \n",
       "7829    1.0        1.0     0.0           NaN    1.0        1.0            0.0   \n",
       "7830    0.0        0.0     NaN           0.0    0.0        0.0            0.0   \n",
       "\n",
       "      SR-ARE  SR-ATAD5  SR-HSE  SR-MMP  SR-p53  \\\n",
       "0        1.0       0.0     0.0     0.0     0.0   \n",
       "1        NaN       0.0     NaN     0.0     0.0   \n",
       "2        0.0       NaN     0.0     NaN     NaN   \n",
       "3        NaN       0.0     NaN     0.0     0.0   \n",
       "4        0.0       0.0     0.0     0.0     0.0   \n",
       "...      ...       ...     ...     ...     ...   \n",
       "7826     0.0       NaN     0.0     NaN     NaN   \n",
       "7827     NaN       0.0     0.0     NaN     0.0   \n",
       "7828     1.0       0.0     0.0     0.0     0.0   \n",
       "7829     0.0       0.0     0.0     1.0     1.0   \n",
       "7830     0.0       0.0     0.0     1.0     0.0   \n",
       "\n",
       "                                                 smiles  \n",
       "0                          CCOc1ccc2nc(S(N)(=O)=O)sc2c1  \n",
       "1                             CCN1C(=O)NC(c2ccccc2)C1=O  \n",
       "2     CC[C@]1(O)CC[C@H]2[C@@H]3CCC4=CCCC[C@@H]4[C@H]...  \n",
       "3                       CCCN(CC)C(CC)C(=O)Nc1c(C)cccc1C  \n",
       "4                             CC(O)(P(=O)(O)O)P(=O)(O)O  \n",
       "...                                                 ...  \n",
       "7826  CCOc1nc2cccc(C(=O)O)c2n1Cc1ccc(-c2ccccc2-c2nnn...  \n",
       "7827  CC(=O)[C@H]1CC[C@H]2[C@@H]3CCC4=CC(=O)CC[C@]4(...  \n",
       "7828  C[C@]12CC[C@H]3[C@@H](CCC4=CC(=O)CC[C@@]43C)[C...  \n",
       "7829  C[C@]12CC[C@@H]3c4ccc(O)cc4CC[C@H]3[C@@H]1CC[C...  \n",
       "7830            COc1ccc2c(c1OC)CN1CCc3cc4c(cc3C1C2)OCO4  \n",
       "\n",
       "[7831 rows x 13 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "hidden": true,
    "id": "GEdp1FUphajL",
    "outputId": "a10d7764-89bd-40cb-f72d-6689cb3ac537"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NR-AR one: 309  zero: 6956  NAN: 566\n",
      "NR-AR-LBD one: 237  zero: 6521  NAN: 1073\n",
      "NR-AhR one: 768  zero: 5781  NAN: 1282\n",
      "NR-Aromatase one: 300  zero: 5521  NAN: 2010\n",
      "NR-ER one: 793  zero: 5400  NAN: 1638\n",
      "NR-ER-LBD one: 350  zero: 6605  NAN: 876\n",
      "NR-PPAR-gamma one: 186  zero: 6264  NAN: 1381\n",
      "SR-ARE one: 942  zero: 4890  NAN: 1999\n",
      "SR-ATAD5 one: 264  zero: 6808  NAN: 759\n",
      "SR-HSE one: 372  zero: 6095  NAN: 1364\n",
      "SR-MMP one: 918  zero: 4892  NAN: 2021\n",
      "SR-p53 one: 423  zero: 6351  NAN: 1057\n"
     ]
    }
   ],
   "source": [
    "one = []\n",
    "zero = []\n",
    "nan = []\n",
    " \n",
    "for task in tox21_tasks:\n",
    "    a = list(df[task].value_counts(dropna=False).to_dict().values())\n",
    "    zero.append(a[0])\n",
    "    nan.append(a[1])\n",
    "    one.append(a[2])\n",
    "    print(task ,\"one:\" ,a[2] ,\" zero:\", a[0], \" NAN:\",a[1])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "background_save": true,
     "base_uri": "https://localhost:8080/",
     "height": 881
    },
    "hidden": true,
    "id": "QjNMCFSqhajM",
    "outputId": "3e711fda-ddf9-4e3d-dadd-08598b8d6493"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABmIAAATWCAYAAAA2BLk9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/a0lEQVR4nOzde7TVdYH//9eGw51zjqLCESWhRPKat0J0JnFAJDWdrLyAiHlNK4dJ06xZA2lh2PJS4TimJHnLatSyG94yyxQvOJi3rClETVBUPCgiIO7fH37dv46gAvJmy+HxWGuv1fns9/583p/9bucan/Peu1KtVqsBAAAAAABgjetQ7wkAAAAAAAC0V0IMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAAAAAABAIUIMAACsgyqVyko9fvvb366R61177bU57LDDsuWWW6Zbt27p379/Ro8enb/85S/Ljf3FL36RI444Ittvv306deqUSqXyrq//2GOPpVKpZOrUqav82ocffjgTJkzIY4899q7nsSbccccdmTBhQl544YV3dZ4jjzwy/fv3b3OsUqlkwoQJ7+q8AADAmtVQ7wkAAACr7s4772zz95lnnplbb701v/nNb9oc32abbdbI9SZNmpSWlpZ89atfzfvf//488cQTmThxYnbeeedMnz492267bW3sddddl+nTp2ennXZKly5dMmPGjDUyh9X18MMP52tf+1qGDh26XLiohzvuuCNf+9rXcuSRR2aDDTZYo+e+8847s/nmm6/RcwIAAO+OEAMAAOug3Xbbrc3fm2yySTp06LDc8TXl5z//eXr37t3m2L/8y7+kf//+Oe+883LJJZfUjl988cXp0OH1zfef//zn6x5i1iel1v+dvPzyy+nevXtdrg0AAO91vpoMAADaqeeffz4nnnhiNttss3Tu3Dnvf//789WvfjWLFy9OkrzyyivZaaedsuWWW6a1tbX2urlz56alpSVDhw7NsmXLkmS5CJMkffv2zeabb54nnniizfE3Iszqeuqpp3LwwQensbExzc3NOeSQQzJ37tzlxt1777059NBD079//9rXpR122GGZPXt2bczUqVPz6U9/Okmy11571b6y7Y2vOLvpppty4IEHZvPNN0/Xrl2z5ZZb5vjjj8+zzz7b5lrz5s3Lcccdl379+qVLly7ZZJNNsscee+Tmm29uM+7mm2/OsGHD0tTUlO7du2ePPfbILbfcUnt+woQJ+dKXvpQkGTBgwEp/hdzUqVMzaNCgdOnSJVtvvXUuu+yyFY5781eTzZs3LyeeeGK22Wab9OzZM717986//Mu/5Pe///1yr33yySfzqU99Ko2Njdlggw0yevTo3HPPPct9JdyRRx6Znj175oEHHsiIESPS2NiYYcOGrdL7OWHChFQqlfzxj3/Mpz/96TQ3N6dXr1754he/mFdffTWPPvpoRo4cmcbGxvTv3z9nn332274/AADwXmZHDAAAtEOvvPJK9tprr/z1r3/N1772teywww75/e9/n7POOiszZ87ML3/5y3Tt2jU//vGPs8suu+Soo47KNddck9deey2jR49OtVrND3/4w3Ts2PEtr/G3v/0ts2fPzr/+67+usXkvWrQow4cPz1NPPZWzzjorW221VX75y1/mkEMOWW7sY489lkGDBuXQQw9Nr169MmfOnFx44YX58Ic/nIcffjgbb7xx9ttvv0ycODFf+cpXcsEFF2TnnXdOknzgAx9Ikvz1r3/NkCFDcswxx6S5uTmPPfZYzj333PzTP/1THnjggXTq1ClJMmbMmNx33335xje+ka222iovvPBC7rvvvjz33HO1+VxxxRU54ogjcuCBB+YHP/hBOnXqlIsuuij77LNPbrjhhgwbNizHHHNMnn/++Xz3u9/Ntddem0033TTJ23+F3NSpU/OZz3wmBx54YM4555y0trZmwoQJWbx48TtGr+effz5JMn78+LS0tOSll17Kddddl6FDh+aWW27J0KFDkyQLFy7MXnvtleeffz6TJk3KlltumWnTpq3wfU+SJUuW5IADDsjxxx+fL3/5y3n11VdX6f18w8EHH5zDDz88xx9/fG666aacffbZWbp0aW6++eaceOKJOeWUU3LVVVfltNNOy5ZbbpmDDjrobe8XAADek6oAAMA6b+zYsdUePXrU/v7v//7vapLqj3/84zbjJk2aVE1SvfHGG2vHfvSjH1WTVM8///zqf/7nf1Y7dOjQ5vkVWbp0aXXo0KHVpqam6uOPP/6W4z73uc9VV+X/7LjwwgurSao/+9nP2hw/9thjq0mql1566Vu+9tVXX62+9NJL1R49elS//e1v147/5Cc/qSap3nrrrW977ddee626dOnS6uzZs5ebQ8+ePavjxo17y9cuXLiw2qtXr+rHP/7xNseXLVtW/dCHPlT9yEc+Ujv2rW99q5qkOmvWrLedzxuv79u3b3XnnXeuvvbaa7Xjjz32WLVTp07VLbbYos34JNXx48e/5fleffXV6tKlS6vDhg2rfuITn6gdv+CCC6pJqr/+9a/bjD/++OOXe9/Hjh1bTVL9/ve//7Zzf7v3c/z48dUk1XPOOafNa3bcccdqkuq1115bO7Z06dLqJptsUj3ooIPe9noAAPBe5avJAACgHfrNb36THj165FOf+lSb40ceeWSStPm6rIMPPjgnnHBCvvSlL+XrX/96vvKVr2Tvvfd+y3NXq9UcffTR+f3vf5/LLrss/fr1W2PzvvXWW9PY2JgDDjigzfFRo0YtN/all16q7ZRoaGhIQ0NDevbsmYULF+aRRx5Zqes988wz+exnP5t+/fqloaEhnTp1yhZbbJEkbc7xkY98JFOnTs3Xv/71TJ8+PUuXLm1znjvuuCPPP/98xo4dm1dffbX2eO211zJy5Mjcc889Wbhw4aq+HXn00Ufz1FNPZdSoUalUKrXjW2yxRXbfffeVOsd///d/Z+edd07Xrl1r93jLLbe0ub/bbrstjY2NGTlyZJvXHnbYYW953k9+8pPLHVvZ9/MN+++/f5u/t95661QqlXzsYx+rHWtoaMiWW27Z5ivnAABgXSLEAABAO/Tcc8+lpaWlzb+8T17/rZeGhoY2X6mVJEcddVSWLl2ahoaGnHTSSW953mq1mmOOOSZXXHFFpk6dmgMPPHCNz7tPnz7LHW9paVnu2KhRozJ58uQcc8wxueGGG3L33XfnnnvuySabbJJFixa947Vee+21jBgxItdee21OPfXU3HLLLbn77rszffr0JGlzjh/96EcZO3ZsLrnkkgwZMiS9evXKEUccUfvtmqeffjpJ8qlPfSqdOnVq85g0aVKq1Wrta8JW9f14q/tf0bE3O/fcc3PCCSdk8ODBueaaazJ9+vTcc889GTlyZJv7e6v3fUXHkqR79+5pampqc2xV3s839OrVq83fnTt3Tvfu3dO1a9fljr/yyivveL8AAPBe5DdiAACgHdpoo41y1113pVqttokxzzzzTF599dVsvPHGtWMLFy7MmDFjstVWW+Xpp5/OMccck5/97GfLnfONCHPppZdmypQpOfzww4vM++67717u+BvB4w2tra35xS9+kfHjx+fLX/5y7fjixYtXOng8+OCDuf/++zN16tSMHTu2dvz//u//lhu78cYb5/zzz8/555+fxx9/PNdff32+/OUv55lnnsm0adNq7+d3v/vd7Lbbbiu83ltFjbez0UYbJVn+/t/q2JtdccUVGTp0aC688MI2x1988cXlrrMy7/sb3hz4klV7PwEAYH1iRwwAALRDw4YNy0svvZSf/vSnbY5fdtllteff8NnPfjaPP/54rr322kyZMiXXX399zjvvvDavq1arOfbYY3PppZfmoosuymc+85ki895rr73y4osv5vrrr29z/Kqrrmrzd6VSSbVaTZcuXdocv+SSS7Js2bI2x94Y8+YdGW/EhDef46KLLnrbOb7vfe/L5z//+ey999657777kiR77LFHNthggzz88MPZddddV/jo3Lnz285nRQYNGpRNN900P/zhD1OtVmvHZ8+enTvuuOMdX1+pVJa7vz/+8Y+588472xzbc8898+KLL+bXv/51m+NXX331O17jH6+VrPr7CQAA7Z0dMQAA0A4dccQRueCCCzJ27Ng89thj2X777XP77bdn4sSJ2XfffTN8+PAkr4eLK664Ipdeemm23XbbbLvttvn85z+f0047LXvssUc+8pGPJElOOumkTJkyJUcddVS233772tdNJa//i/eddtqp9vfs2bNzzz33JEn++te/Jkn+53/+J0nSv3//7Lrrrm877/POOy9HHHFEvvGNb2TgwIH51a9+lRtuuKHNuKampnz0ox/Nt771rWy88cbp379/brvttkyZMiUbbLBBm7HbbbddkuR73/teGhsb07Vr1wwYMCAf/OAH84EPfCBf/vKXU61W06tXr/z85z/PTTfd1Ob1ra2t2WuvvTJq1Kh88IMfTGNjY+65555MmzYtBx10UJKkZ8+e+e53v5uxY8fm+eefz6c+9an07t078+bNy/3335958+bVdqVsv/32SZJvf/vbGTt2bDp16pRBgwalsbFxufejQ4cOOfPMM3PMMcfkE5/4RI499ti88MILmTBhwkp9Ndn++++fM888M+PHj8+ee+6ZRx99NGeccUYGDBiQV199tTZu7NixOe+883L44Yfn61//erbccsv8+te/rr3vHTq88/8P38q+nwAAsN6pAgAA67yxY8dWe/To0ebYc889V/3sZz9b3XTTTasNDQ3VLbbYonr66adXX3nllWq1Wq3+8Y9/rHbr1q06duzYNq975ZVXqrvssku1f//+1fnz51er1Wp1iy22qCZZ4WOLLbZo8/pLL730Lce++Vor8uSTT1Y/+clPVnv27FltbGysfvKTn6zecccd1STVSy+9dLlxG264YbWxsbE6cuTI6oMPPljdYostlrvO+eefXx0wYEC1Y8eObc7z8MMPV/fee+9qY2NjdcMNN6x++tOfrj7++OPVJNXx48fX3o/Pfvaz1R122KHa1NRU7datW3XQoEHV8ePHVxcuXNjmOrfddlt1v/32q/bq1avaqVOn6mabbVbdb7/9qj/5yU/ajDv99NOrffv2rXbo0KGapHrrrbe+7XtyySWXVAcOHFjt3Llzdauttqp+//vfr44dO3a59/4f512tVquLFy+unnLKKdXNNtus2rVr1+rOO+9c/elPf7rC1z7++OPVgw46qM37/qtf/aqapPqzn/2sNm5F/117w8q8n9VqtTp+/Phqkuq8efPavP6tzr3nnntWt91227d9jwAA4L2qUq3+w/52AAAA+H8mTpyY//iP/8jjjz+ezTffvN7TAQCAdZKvJgMAACCTJ09O8vpXjC1dujS/+c1v8p3vfCeHH364CAMAAO+CEAMAAEC6d++e8847L4899lgWL16c973vfTnttNPyH//xH/WeGgAArNN8NRkAAAAAAEAhHeo9AQAAAAAAgPZKiAEAAAAAAChEiAEAAAAAACikod4TWFe89tpreeqpp9LY2JhKpVLv6QAAAAAAAHVUrVbz4osvpm/fvunQ4a33vQgxK+mpp55Kv3796j0NAAAAAADgPeSJJ57I5ptv/pbPCzErqbGxMcnrb2hTU1OdZwMAAAAAANTTggUL0q9fv1o/eCtCzEp64+vImpqahBgAAAAAACBJ3vHnTN76S8sAAAAAAAB4V4QYAAAAAACAQoQYAAAAAACAQvxGDAAAAAAA1NGyZcuydOnSek+DN+nYsWMaGhre8Tdg3okQAwAAAAAAdfLSSy/lySefTLVarfdUWIHu3btn0003TefOnVf7HEIMAAAAAADUwbJly/Lkk0+me/fu2WSTTd71zgvWnGq1miVLlmTevHmZNWtWBg4cmA4dVu/XXoQYAAAAAACog6VLl6ZarWaTTTZJt27d6j0d3qRbt27p1KlTZs+enSVLlqRr166rdZ7VyzcAAAAAAMAaYSfMe9fq7oJpc441MA8AAAAAAABWQIgBAAAAAAAoxG/EAAAAAADAe0jla2v3q8qq46tr9XorMnXq1IwbNy4vvPBCvaeyxtkRAwAAAAAArLI77rgjHTt2zMiRI1fpdf3798/555/f5tghhxySP//5z2twdu8dQgwAAAAAALDKvv/97+cLX/hCbr/99jz++OPv6lzdunVL796919DM3luEGAAAAAAAYJUsXLgwP/7xj3PCCSdk//33z9SpU9s8f/3112fXXXdN165ds/HGG+eggw5KkgwdOjSzZ8/Ov//7v6dSqaRSef1r2KZOnZoNNtggSfLoo4+mUqnkT3/6U5tznnvuuenfv3+q1de/Su3hhx/Ovvvum549e6ZPnz4ZM2ZMnn322bI3vhqEGAAAAAAAYJX86Ec/yqBBgzJo0KAcfvjhufTSS2uB5Je//GUOOuig7Lfffvnf//3f3HLLLdl1112TJNdee20233zznHHGGZkzZ07mzJmz3LkHDRqUXXbZJVdeeWWb41dddVVGjRqVSqWSOXPmZM8998yOO+6Ye++9N9OmTcvTTz+dgw8+uPzNr6KGek8AAAAAAABYt0yZMiWHH354kmTkyJF56aWXcsstt2T48OH5xje+kUMPPTRf+9rXauM/9KEPJUl69eqVjh07prGxMS0tLW95/tGjR2fy5Mk588wzkyR//vOfM2PGjFx22WVJkgsvvDA777xzJk6cWHvN97///fTr1y9//vOfs9VWW63xe15ddsQAAAAAAAAr7dFHH83dd9+dQw89NEnS0NCQQw45JN///veTJDNnzsywYcPe1TUOPfTQzJ49O9OnT0+SXHnlldlxxx2zzTbbJElmzJiRW2+9NT179qw9PvjBDyZJ/vrXv76ra69pdsQAAAAAAAArbcqUKXn11Vez2Wab1Y5Vq9V06tQp8+fPT7du3d71NTbddNPstddeueqqq7Lbbrvlhz/8YY4//vja86+99lo+/vGPZ9KkSSt87XuJEAMAAAAAAKyUV199NZdddlnOOeecjBgxos1zn/zkJ3PllVdmhx12yC233JLPfOYzKzxH586ds2zZsne81ujRo3PaaaflsMMOy1//+tfaDpwk2XnnnXPNNdekf//+aWh4b6cOX00GAAAAAACslF/84heZP39+jj766Gy33XZtHp/61KcyZcqUjB8/Pj/84Q8zfvz4PPLII3nggQdy9tln187Rv3///O53v8vf//73PPvss295rYMOOigLFizICSeckL322qvNDpzPfe5zef7553PYYYfl7rvvzt/+9rfceOONOeqoo1Yq8qxN7+1MBAAAAAAA65nq+Gq9p/CWpkyZkuHDh6e5uXm55z75yU9m4sSJaWpqyk9+8pOceeaZ+eY3v5mmpqZ89KMfrY0744wzcvzxx+cDH/hAFi9enGp1xffb1NSUj3/84/nJT35S+/2ZN/Tt2zd/+MMfctppp2WfffbJ4sWLs8UWW2TkyJHp0OG9tQelUn2rO6SNBQsWpLm5Oa2trWlqaqr3dAAAAAAAWMe98sormTVrVgYMGJCuXbvWezqswNut0cp2g/dWFgIAAAAAAGhHhBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAHgPqVTW7mNd9dvf/jaVSiUvvPBCvafytoQYAAAAAABglRx55JH513/917V2vaFDh2bcuHFtju2+++6ZM2dOmpub19o8VkdDvScAAAAAAACwqjp37pyWlpZ6T+Md2REDAAAAAACstqFDh+akk07Kqaeeml69eqWlpSUTJkxoM+bcc8/N9ttvnx49eqRfv3458cQT89JLL7UZ84c//CF77rlnunfvng033DD77LNP5s+fnyOPPDK33XZbvv3tb6dSqaRSqeSxxx5r89Vkra2t6datW6ZNm9bmnNdee2169OhRu9bf//73HHLIIdlwww2z0UYb5cADD8xjjz1W8u0RYgAAAAAAgHfnBz/4QXr06JG77rorZ599ds4444zcdNNNtec7dOiQ73znO3nwwQfzgx/8IL/5zW9y6qmn1p6fOXNmhg0blm233TZ33nlnbr/99nz84x/PsmXL8u1vfztDhgzJsccemzlz5mTOnDnp169fm+s3Nzdnv/32y5VXXtnm+FVXXZUDDzwwPXv2zMsvv5y99torPXv2zO9+97vcfvvt6dmzZ0aOHJklS5YUe298NRkAAAAAAPCu7LDDDhk/fnySZODAgZk8eXJuueWW7L333knS5vddBgwYkDPPPDMnnHBC/uu//itJcvbZZ2fXXXet/Z0k2267be0/d+7cOd27d3/bryIbPXp0jjjiiLz88svp3r17FixYkF/+8pe55pprkiRXX311OnTokEsuuSSVSiVJcumll2aDDTbIb3/724wYMWLNvBlvYkcMAAAAAADwruywww5t/t50003zzDPP1P6+9dZbs/fee2ezzTZLY2NjjjjiiDz33HNZuHBhkv9/R8y7sd9++6WhoSHXX399kuSaa65JY2NjLbDMmDEj//d//5fGxsb07NkzPXv2TK9evfLKK6/kr3/967u69tsRYgAAAAAAgHelU6dObf6uVCp57bXXkiSzZ8/Ovvvum+222y7XXHNNZsyYkQsuuCBJsnTp0iRJt27d3vUcOnfunE996lO56qqrkrz+tWSHHHJIGhpe/3Kw1157LbvssktmzpzZ5vHnP/85o0aNetfXfytCDAAAAAAAUMy9996bV199Neecc0522223bLXVVnnqqafajNlhhx1yyy23vOU5OnfunGXLlr3jtUaPHp1p06bloYceyq233prRo0fXntt5553zl7/8Jb17986WW27Z5tHc3Lz6N/gOhBgAAAAAAKCYD3zgA3n11Vfz3e9+N3/7299y+eWX57//+7/bjDn99NNzzz335MQTT8wf//jH/OlPf8qFF16YZ599NknSv3//3HXXXXnsscfy7LPP1nbbvNmee+6ZPn36ZPTo0enfv39222232nOjR4/OxhtvnAMPPDC///3vM2vWrNx22235t3/7tzz55JPF7r+uIaZ///6pVCrLPT73uc8lSarVaiZMmJC+ffumW7duGTp0aB566KE251i8eHG+8IUvZOONN06PHj1ywAEHLPeGzZ8/P2PGjElzc3Oam5szZsyYvPDCC2vrNgEAAAAAYKVVq2v3UdqOO+6Yc889N5MmTcp2222XK6+8MmeddVabMVtttVVuvPHG3H///fnIRz6SIUOG5Gc/+1nta8VOOeWUdOzYMdtss0022WSTPP744yu8VqVSyWGHHZb777+/zW6YJOnevXt+97vf5X3ve18OOuigbL311jnqqKOyaNGiNDU1lbn5JJVqdW28zSs2b968NluJHnzwwey999659dZbM3To0EyaNCnf+MY3MnXq1Gy11Vb5+te/nt/97nd59NFH09jYmCQ54YQT8vOf/zxTp07NRhttlJNPPjnPP/98ZsyY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7rzzzjQ3N9ciTJLstttuaW5uro15s8WLF2fBggVtHgAAAAAAAKuiriHmb3/7Wy688MIMHDgwN9xwQz772c/mpJNOymWXXZYkmTt3bpKkT58+bV7Xp0+f2nNz585N586ds+GGG77tmN69ey93/d69e9fGvNlZZ51V+z2Z5ubm9OvX793dLAAAAAAAsN6pa4h57bXXsvPOO2fixInZaaedcvzxx+fYY4/NhRde2GZc5U37uarV6nLH3uzNY1Y0/u3Oc/rpp6e1tbX2eOKJJ1b2tgAAAAAAAJLUOcRsuumm2Wabbdoc23rrrfP4448nSVpaWpJkuV0rzzzzTG2XTEtLS5YsWZL58+e/7Zinn356uevPmzdvud02b+jSpUuampraPAAAAAAAAFZFXUPMHnvskUcffbTNsT//+c/ZYostkiQDBgxIS0tLbrrpptrzS5YsyW233Zbdd989SbLLLrukU6dObcbMmTMnDz74YG3MkCFD0tramrvvvrs25q677kpra2ttDAAAAAAAwJrWUM+L//u//3t23333TJw4MQcffHDuvvvufO9738v3vve9JK9/ndi4ceMyceLEDBw4MAMHDszEiRPTvXv3jBo1KknS3Nyco48+OieffHI22mij9OrVK6ecckq23377DB8+PMnru2xGjhyZY489NhdddFGS5Ljjjsv++++fQYMG1efmAQAAAACAdq+uIebDH/5wrrvuupx++uk544wzMmDAgJx//vkZPXp0bcypp56aRYsW5cQTT8z8+fMzePDg3HjjjWlsbKyNOe+889LQ0JCDDz44ixYtyrBhwzJ16tR07NixNubKK6/MSSedlBEjRiRJDjjggEyePHnt3SwAAAAAALDeqVSr1Wq9J7EuWLBgQZqbm9Pa2ur3YtaySqV+1/bpWDusMQDUX73+eeyfxWuPNYZ1n89x+2eNYd3nc7x+WdluUNffiAEAAAAAAGjPhBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBCGuo9AQDav0qlfteuVut3bQAAAACwIwYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKCQhnpPAABY91Uq9bt2tVq/awMAAAC8EztiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAACmmo9wQAAHjvq1Tqc91qtT7XBQAAgDXFjhgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBC6hpiJkyYkEql0ubR0tJSe75arWbChAnp27dvunXrlqFDh+ahhx5qc47FixfnC1/4QjbeeOP06NEjBxxwQJ588sk2Y+bPn58xY8akubk5zc3NGTNmTF544YW1cYsAAAAAAMB6rO47YrbddtvMmTOn9njggQdqz5199tk599xzM3ny5Nxzzz1paWnJ3nvvnRdffLE2Zty4cbnuuuty9dVX5/bbb89LL72U/fffP8uWLauNGTVqVGbOnJlp06Zl2rRpmTlzZsaMGbNW7xMAAAAAAFj/NNR9Ag0NbXbBvKFareb888/PV7/61Rx00EFJkh/84Afp06dPrrrqqhx//PFpbW3NlClTcvnll2f48OFJkiuuuCL9+vXLzTffnH322SePPPJIpk2blunTp2fw4MFJkosvvjhDhgzJo48+mkGDBq29mwUAAAAAANYrdd8R85e//CV9+/bNgAEDcuihh+Zvf/tbkmTWrFmZO3duRowYURvbpUuX7LnnnrnjjjuSJDNmzMjSpUvbjOnbt2+222672pg777wzzc3NtQiTJLvttluam5trY1Zk8eLFWbBgQZsHAAAAAADAqqhriBk8eHAuu+yy3HDDDbn44oszd+7c7L777nnuuecyd+7cJEmfPn3avKZPnz615+bOnZvOnTtnww03fNsxvXv3Xu7avXv3ro1ZkbPOOqv2mzLNzc3p16/fu7pXAAAAAABg/VPXEPOxj30sn/zkJ7P99ttn+PDh+eUvf5nk9a8ge0OlUmnzmmq1utyxN3vzmBWNf6fznH766Wltba09nnjiiZW6JwAAAAAAgDfU/avJ/lGPHj2y/fbb5y9/+Uvtd2PevGvlmWeeqe2SaWlpyZIlSzJ//vy3HfP0008vd6158+Ytt9vmH3Xp0iVNTU1tHgAAAAAAAKviPRViFi9enEceeSSbbrppBgwYkJaWltx0002155csWZLbbrstu+++e5Jkl112SadOndqMmTNnTh588MHamCFDhqS1tTV33313bcxdd92V1tbW2hgAAAAAAIASGup58VNOOSUf//jH8773vS/PPPNMvv71r2fBggUZO3ZsKpVKxo0bl4kTJ2bgwIEZOHBgJk6cmO7du2fUqFFJkubm5hx99NE5+eSTs9FGG6VXr1455ZRTal91liRbb711Ro4cmWOPPTYXXXRRkuS4447L/vvvn0GDBtXt3gEAAAAAgPavriHmySefzGGHHZZnn302m2yySXbbbbdMnz49W2yxRZLk1FNPzaJFi3LiiSdm/vz5GTx4cG688cY0NjbWznHeeeeloaEhBx98cBYtWpRhw4Zl6tSp6dixY23MlVdemZNOOikjRoxIkhxwwAGZPHny2r1ZAAAAAABgvVOpVqvVek9iXbBgwYI0NzentbXV78WsZZVK/a7t07F2WOP2zxq3f9a4/avXGlvftccat3/WGNZ9PsftnzWGdZ/P8fplZbvBe+o3YgAAAAAAANoTIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKCQhnpPAAAAAHj3KpX6XLdarc91AdZF/rca1k92xAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABTyngkxZ511ViqVSsaNG1c7Vq1WM2HChPTt2zfdunXL0KFD89BDD7V53eLFi/OFL3whG2+8cXr06JEDDjggTz75ZJsx8+fPz5gxY9Lc3Jzm5uaMGTMmL7zwwlq4KwAAAAAAYH32nggx99xzT773ve9lhx12aHP87LPPzrnnnpvJkyfnnnvuSUtLS/bee++8+OKLtTHjxo3Lddddl6uvvjq33357Xnrppey///5ZtmxZbcyoUaMyc+bMTJs2LdOmTcvMmTMzZsyYtXZ/AAAAAADA+qnuIeall17K6NGjc/HFF2fDDTesHa9Wqzn//PPz1a9+NQcddFC22267/OAHP8jLL7+cq666KknS2tqaKVOm5Jxzzsnw4cOz00475YorrsgDDzyQm2++OUnyyCOPZNq0abnkkksyZMiQDBkyJBdffHF+8Ytf5NFHH63LPQMAAAAAAOuHuoeYz33uc9lvv/0yfPjwNsdnzZqVuXPnZsSIEbVjXbp0yZ577pk77rgjSTJjxowsXbq0zZi+fftmu+22q425884709zcnMGDB9fG7Lbbbmlubq6NWZHFixdnwYIFbR4AAAAAAACroqGeF7/66qtz33335Z577lnuublz5yZJ+vTp0+Z4nz59Mnv27NqYzp07t9lJ88aYN14/d+7c9O7de7nz9+7duzZmRc4666x87WtfW7UbAgAAAAAA+Ad12xHzxBNP5N/+7d9yxRVXpGvXrm85rlKptPm7Wq0ud+zN3jxmRePf6Tynn356Wltba48nnnjiba8JAAAAAADwZnULMTNmzMgzzzyTXXbZJQ0NDWloaMhtt92W73znO2loaKjthHnzrpVnnnmm9lxLS0uWLFmS+fPnv+2Yp59+ernrz5s3b7ndNv+oS5cuaWpqavMAAAAAAABYFXULMcOGDcsDDzyQmTNn1h677rprRo8enZkzZ+b9739/WlpactNNN9Ves2TJktx2223ZfffdkyS77LJLOnXq1GbMnDlz8uCDD9bGDBkyJK2trbn77rtrY+666660trbWxgAAAAAAAJRQt9+IaWxszHbbbdfmWI8ePbLRRhvVjo8bNy4TJ07MwIEDM3DgwEycODHdu3fPqFGjkiTNzc05+uijc/LJJ2ejjTZKr169csopp2T77bfP8OHDkyRbb711Ro4cmWOPPTYXXXRRkuS4447L/vvvn0GDBq3FOwYAAAAAANY3dQsxK+PUU0/NokWLcuKJJ2b+/PkZPHhwbrzxxjQ2NtbGnHfeeWloaMjBBx+cRYsWZdiwYZk6dWo6duxYG3PllVfmpJNOyogRI5IkBxxwQCZPnrzW7wcAAAAAAFi/VKrVarXek1gXLFiwIM3NzWltbfV7MWtZpVK/a/t0rB3WuP2zxu2fNW7/6rXG1nftscbtnzVu/6xx+2eN2z9r3P5Z4/bPGq9fVrYb1O03YgAAAAAAANo7IQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKAQIQYAAAAAAKCQ1QoxixYtyssvv1z7e/bs2Tn//PNz4403rrGJAQAAAAAArOtWK8QceOCBueyyy5IkL7zwQgYPHpxzzjknBx54YC688MI1OkEAAAAAAIB11WqFmPvuuy///M//nCT5n//5n/Tp0yezZ8/OZZddlu985ztrdIIAAAAAAADrqtUKMS+//HIaGxuTJDfeeGMOOuigdOjQIbvttltmz569RicIAAAAAACwrlqtELPlllvmpz/9aZ544onccMMNGTFiRJLkmWeeSVNT0xqdIAAAAAAAwLpqtULMf/7nf+aUU05J//7985GPfCRDhgxJ8vrumJ122mmNThAAAAAAAGBdValWq9XVeeHcuXMzZ86cfOhDH0qHDq/3nLvvvjtNTU354Ac/uEYn+V6wYMGCNDc3p7W11a6ftaxSqd+1V+/Twaqyxu2fNW7/rHH7V681tr5rjzVu/6xx+2eN2z9r3P5Z4/bPGrd/1nj9srLdYLV2xCRJS0tLGhsbc9NNN2XRokVJkg9/+MPtMsIAAAAAAACsjtUKMc8991yGDRuWrbbaKvvuu2/mzJmTJDnmmGNy8sknr9EJAgAAAAAArKtWK8T8+7//ezp16pTHH3883bt3rx0/5JBDMm3atDU2OQAAAAAAgHVZw+q86MYbb8wNN9yQzTffvM3xgQMHZvbs2WtkYgAAAAAAAOu61doRs3DhwjY7Yd7w7LPPpkuXLu96UgAAAAAAAO3BaoWYj370o7nssstqf1cqlbz22mv51re+lb322muNTQ4AAAAAAGBdtlpfTfatb30rQ4cOzb333pslS5bk1FNPzUMPPZTnn38+f/jDH9b0HAEAAAAAANZJq7UjZptttskf//jHfOQjH8nee++dhQsX5qCDDsr//u//5gMf+MCaniMAAAAAAMA6qVKtVqv1nsS6YMGCBWlubk5ra2uamprqPZ31SqVSv2v7dKwd1rj9s8btnzVu/+q1xtZ37bHG7Z81bv+scftnjds/a9z+WeP2zxqvX1a2G6zWjphp06bl9ttvr/19wQUXZMcdd8yoUaMyf/781TklAAAAAABAu7NaIeZLX/pSFixYkCR54IEH8sUvfjH77rtv/va3v+WLX/ziGp0gAAAAAADAuqphdV40a9asbLPNNkmSa665Jh//+MczceLE3Hfffdl3333X6AQBAAAAAADWVau1I6Zz5855+eWXkyQ333xzRowYkSTp1atXbacMAAAAAADA+m61dsT80z/9U774xS9mjz32yN13350f/ehHSZI///nP2XzzzdfoBAEAAAAAANZVq7UjZvLkyWloaMj//M//5MILL8xmm22WJPn1r3+dkSNHrtEJAgAAAAAArKsq1Wq1Wu9JrAsWLFiQ5ubmtLa2pqmpqd7TWa9UKvW7tk/H2mGN2z9r3P5Z4/avXmtsfdcea9z+WeP2zxq3f9a4/bPG7Z81bv+s8fplZbvBan012T9atGhRli5d2uaYUAEAAAAAALCaX022cOHCfP7zn0/v3r3Ts2fPbLjhhm0eAAAAAAAArGaIOfXUU/Ob3/wm//Vf/5UuXbrkkksuyde+9rX07ds3l1122ZqeIwAAAAAAwDpptb6a7Oc//3kuu+yyDB06NEcddVT++Z//OVtuuWW22GKLXHnllRk9evSanicAAAAAAMA6Z7V2xDz//PMZMGBAktd/D+b5559PkvzTP/1Tfve736252QEAAAAAAKzDVivEvP/9789jjz2WJNlmm23y4x//OMnrO2U22GCDNTU3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ABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABRS0xAzbdq0vPe9702vXr3St2/fHHHEEXnsscc6nVOtVjNlypS0tLSksbExo0ePziOPPNLpnPb29px66qnZcccds+2222bcuHH57W9/2+mc5cuXZ8KECWlqakpTU1MmTJiQF154ofRDBAAAAADYJKqpbPQjlcIfwOuqaYiZO3duJk2alPnz52fOnDl56aWXMmbMmKxevbrjnIsvvjiXXXZZpk+fngULFqS5uTkf+tCHsnLlyo5zWltbM3v27MycOTPz5s3LqlWrMnbs2Kxbt67jnPHjx2fhwoW55ZZbcsstt2ThwoWZMGHCJn28AAAAAADA1qVSrVartR7iFc8//3z69u2buXPn5sADD0y1Wk1LS0taW1tz1llnJXl590u/fv1y0UUX5aSTTkpbW1t22mmnXHfddTn66KOTJEuWLEn//v3zox/9KB/+8IezaNGi7L777pk/f37222+/JMn8+fMzcuTIPProoxk6dOgGs7S3t6e9vb3j8xUrVqR///5pa2tL7969N8F3g1fUMqpvPs+O+maN6581rn+l17gaP0S1VqvnsW//pmON6581rn/WuP5Z4/pnjetf3f7dyQ9RB8/jrcuKFSvS1NT0ht1gs3qPmLa2tiRJnz59kiSLFy/O0qVLM2bMmI5zGhoactBBB+Wuu+5Kktx333158cUXO53T0tKSPffcs+OcX/ziF2lqauqIMEny/ve/P01NTR3nvNq0adM6Xsasqakp/fv379oHCwAAAFuQ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ggtqOB1d4dW/76hWq2lpaUlra2vOOuusJEl7e3v69euXiy66KCeddFINp+XNeL3faT355JMZNGhQHnjggey1116bfDa6xl/ye8sFCxbkfe97X5566qkMGDBg0w3HZsmOGKBm2trakrz8i3rqz7p16zJz5sysXr06I0eOrPU4dLFJkyblox/9aA455JBaj0IBjz/+eFpaWjJo0KB8/OMfz29+85taj0QX+v73v5999903Rx55ZPr27Zu99947//7v/17rsShk7dq1uf766zNx4kQRpo4ccMAB+clPfpJf//rXSZJf/vKXmTdvXj7ykY/UeDK6wksvvZR169blbW97W6fjjY2NmTdvXo2moqTFixdn6dKlGTNmTMexhoaGHHTQQbnrrrtqOBnwVrS1taVSqdh5TpKke60HALZO1Wo1kydPzgEHHJA999yz1uPQhR566KGMHDkyf/7zn7Pddttl9uzZ2X333Ws9Fl1o5syZuf/++71OeZ3ab7/98p//+Z955zvfmd/97ne54IILMmrUqDzyyCPZYYcdaj0eXeA3v/lNrrrqqkyePDlf+MIXcs899+S0005LQ0NDPvnJT9Z6PLrYTTfdlBdeeCHHHXdcrUehC5111llpa2vLu971rnTr1i3r1q3LV7/61XziE5+o9Wh0gV69emXkyJE5//zzM2zYsPTr1y//9V//lbvvvjtDhgyp9XgUsHTp0iRJv379Oh3v169fnnrqqVqMBLxFf/7zn3P22Wdn/Pjx6d27d63HYTMgxAA1ccopp+TBBx/0L7rq0NChQ7Nw4cK88MIL+e53v5tjjz02c+fOFWPqxDPPPJPTTz89t9122wb/SpP6cNhhh3X89/DhwzNy5Mjstttu+Y//+I9Mnjy5hpPRVdavX5999903U6dOTZLsvffeeeSRR3LVVVcJMXXoW9/6Vg477LC0tLTUehS60I033pjrr78+N9xwQ/bYY48sXLgwra2taWlpybHHHlvr8egC1113XSZOnJi//du/Tbdu3bLPPvtk/Pjxuf/++2s9GgW9euditVq1mxG2QC+++GI+/vGPZ/369bnyyitrPQ6bCSEG2OROPfXUfP/738+dd96ZXXbZpdbj0MV69OiRd7zjHUmSfffdNwsWLMg3vvGNXH311TWejK5w3333ZdmyZRkxYkTHsXXr1uXOO+/M9OnT097enm7dutVwQrratttum+HDh+fxxx+v9Sh0kZ133nmDOD5s2LB897vfrdFElPLUU0/lxz/+cWbNmlXrUehin/vc53L22Wfn4x//eJKXw/lTTz2VadOmCTF1YrfddsvcuXOzevXqrFixIjvvvHOOPvroDBo0qNajUUBzc3OSl3fG7Lzzzh3Hly1btsEuGWDz9uKLL+aoo47K4sWL89Of/tRuGDp4jxhgk6lWqznllFMya9as/PSnP/WXiK1EtVpNe3t7rcegixx88MF56KGHsnDhwo6PfffdN8ccc0wWLlwowtSh9vb2LFq0qNMvBdiy7b///nnsscc6Hfv1r3+dgQMH1mgiSpkxY0b69u3b6c2+qQ9/+tOf8jd/0/mv8926dcv69etrNBGlbLvtttl5552zfPny3HrrrfnYxz5W65EoYNCgQWlubs6cOXM6jq1duzZz587NqFGjajgZ8Nd4JcI8/vjj+fGPf+ylnenEjhg2K6tWrcoTTzzR8fnixYuzcOHC9OnTJwMGDKjhZHSFSZMm5YYbbsj3vve99OrVq+N1cJuamtLY2Fjj6egKX/jCF3LYYYelf//+WblyZWbOnJk77rgjt9xyS61Ho4v06tVrg/d12nbbbbPDDjt4v6c6ceaZZ+bwww/PgAEDsmzZslxwwQVZsWKFf2FdR/75n/85o0aNytSpU3PUUUflnnvuyTXXXJNrrrmm1qPRhdavX58ZM2bk2GOPTffu/tpXbw4//PB89atfzYABA7LHHnvkgQceyGWXXZaJEyfWejS6yK233ppqtZqhQ4fmiSeeyOc+97kMHTo0n/rUp2o9Gm/SG/2+o7W1NVOnTs2QIUMyZMiQTJ06NT179sz48eNrODV/jTda4z/+8Y95+umns2TJkiTp+Icxzc3NHbui2Ly93hq3tLTkH//xH3P//ffnhz/8YdatW9fxe68+ffqkR48etRqbzUUVNiO33357NckGH8cee2ytR6MLbGxtk1RnzJhR69HoIhMnTqwOHDiw2qNHj+pOO+1UPfjgg6u33XZbrceisIMOOqh6+umn13oMusjRRx9d3XnnnavbbLNNtaWlpfr3f//31UceeaTWY9HFfvCDH1T33HPPakNDQ/Vd73pX9Zprrqn1SHSxW2+9tZqk+thjj9V6FApYsWJF9fTTT68OGDCg+ra3va06ePDg6he/+MVqe3t7rUeji9x4443VwYMHV3v06FFtbm6uTpo0qfrCCy/Ueizegjf6fcf69eur5557brW5ubna0NBQPfDAA6sPPfRQbYfmr/JGazxjxoyN3n7uuefWdG7+cq+3xosXL37N33vdfvvttR6dzUClWq1WS4YeAAAAAACArZX3iAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAANiMPfnkk6lUKlm4cGGtRwEAAN4EIQYAANhsVCqV1/047rjj3vR9P/nkkzn++OMzaNCgNDY2Zrfddsu5556btWvXdjrv9NNPz4gRI9LQ0JC99trrr7rGtddem+233/5NzwgAANSf7rUeAAAA4BXPPfdcx3/feOON+fKXv5zHHnus41hjY+Obvu9HH30069evz9VXX513vOMdefjhh3PiiSdm9erVufTSSzvOq1armThxYu6+++48+OCDb/p6AAAAiR0xAADAZqS5ubnjo6mpKZVKpdOxG264Ibvttlt69OiRoUOH5rrrruv42okTJ+bd73532tvbkyQvvvhiRowYkWOOOSZJcuihh2bGjBkZM2ZMBg8enHHjxuXMM8/MrFmzOs1wxRVXZNKkSRk8ePBfNfsdd9yRT33qU2lra+vYwTNlypQkyfXXX5999903vXr1SnNzc8aPH59ly5Z1fO3y5ctzzDHHZKeddkpjY2OGDBmSGTNmbPQ669evz4knnph3vvOdeeqpp5IkU6ZMyYABA9LQ0JCWlpacdtppf9XsAABAOUIMAACwRZg9e3ZOP/30nHHGGXn44Ydz0kkn5VOf+lRuv/32JC8HlNWrV+fss89OknzpS1/K73//+1x55ZWveZ9tbW3p06dPl8w3atSoXH755endu3eee+65PPfccznzzDOTJGvXrs3555+fX/7yl7npppuyePHiTi+z9qUvfSm/+tWvcvPNN2fRokW56qqrsuOOO25wjbVr1+aoo47Kvffem3nz5mXgwIH5zne+k69//eu5+uqr8/jjj+emm27K8OHDu+QxAQAAb52XJgMAALYIl156aY477ricfPLJSZLJkydn/vz5ufTSS/PBD34w2223Xa6//vocdNBB6dWrV772ta/lJz/5SZqamjZ6f//zP/+Tb37zm/na177WJfP16NGj0y6e/2vixIkd/z148OBcccUVed/73pdVq1Zlu+22y9NPP5299947++67b5Jk11133eD+V61alY9+9KNZs2ZN7rjjjo7H9fTTT6e5uTmHHHJIttlmmwwYMCDve9/7uuQxAQAAb50dMQAAwBZh0aJF2X///Tsd23///bNo0aKOz0eOHJkzzzwz559/fs4444wceOCBG72vJUuW5NBDD82RRx6ZE044oejcSfLAAw/kYx/7WAYOHJhevXpl9OjRSV6OKEny2c9+NjNnzsxee+2Vz3/+87nrrrs2uI9PfOITWbVqVW677bZOcenII4/MmjVrMnjw4Jx44omZPXt2XnrppeKPCQAA+MsIMQAAwBajUql0+rxarXY6tn79+vz85z9Pt27d8vjjj2/0PpYsWZIPfvCDGTlyZK655pqi8ybJ6tWrM2bMmI4dOwsWLMjs2bOTvPxSY0ly2GGH5amnnkpra2uWLFmSgw8+uONlzV7xkY98JA8++GDmz5/f6Xj//v3z2GOP5V//9V/T2NiYk08+OQceeGBefPHF4o8NAAB4Y0IMAACwRRg2bFjmzZvX6dhdd92VYcOGdXx+ySWXZNGiRZk7d25uvfXWDd7w/tlnn83o0aOzzz77ZMaMGfmbv+navxL16NEj69at63Ts0Ucfze9///tceOGF+cAHPpB3vetdWbZs2QZfu9NOO+W4447L9ddfn8svv3yDSPTZz342F154YcaNG5e5c+d2uq2xsTHjxo3LFVdckTvuuCO/+MUv8tBDD3XpYwMAAN4c7xEDAABsET73uc/lqKOOyj777JODDz44P/jBDzJr1qz8+Mc/TpIsXLgwX/7yl/Od73wn+++/f77xjW/k9NNPz0EHHZTBgwdnyZIlGT16dAYMGJBLL700zz//fMd9/9/3dHniiSeyatWqLF26NGvWrMnChQuTJLvvvnt69OjxujPuuuuuWbVqVX7yk5/kPe95T3r27JkBAwakR48e+eY3v5nPfOYzefjhh3P++ed3+rovf/nLGTFiRPbYY4+0t7fnhz/8YafA9IpTTz0169aty9ixY3PzzTfngAMOyLXXXpt169Zlv/32S8+ePXPdddelsbExAwcOfLPfagAAoAsJMQAAwBbhiCOOyDe+8Y1ccsklOe200zJo0KDMmDEjo0ePzp///Occc8wxOe6443L44YcnSY4//vj893//dyZMmJA777wzt912W5544ok88cQT2WWXXTrdd7Va7fjvE044odOOk7333jtJsnjx4uy6666vO+OoUaPymc98JkcffXT+8Ic/5Nxzz82UKVNy7bXX5gtf+EKuuOKK7LPPPrn00kszbty4jq/r0aNHzjnnnDz55JNpbGzMBz7wgcycOXOj12htbc369evzkY98JLfccku23377XHjhhZk8eXLWrVuX4cOH5wc/+EF22GGHv+r7CwAAlFGp/t+/cQAAAAAAANBlvEcMAAAAAABAIUIMAADAX+iwww7Ldtttt9GPqVOn1no8AABgM+SlyQAAAP5Czz77bNasWbPR2/r06ZM+ffps4okAAIDNnRADAAAAAABQiJcmAwAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKOT/AQ/1lJyZSAPmAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 2000x1500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Importing the matplotlib library\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Declaring the figure or the plot (y, x) or (width, height)\n",
    "plt.figure(figsize=[20, 15])\n",
    "\n",
    "X = np.arange(1,len(tox21_tasks)+1)\n",
    "plt.bar(X + 0.2, one, color = 'g', width = 0.25)\n",
    "plt.bar(X + 0.4, zero, color = 'b', width = 0.25)\n",
    "plt.bar(X + 0.6, nan, color = 'r', width = 0.25)\n",
    "\n",
    "# Creating the legend of the bars in the plot\n",
    "plt.legend(['Active' , 'Inactive' ,'NAN'])\n",
    "# Overiding the x axis with the country names\n",
    "plt.xticks([i + 0.25 for i in range(1,13)], X)\n",
    "# Giving the tilte for the plot\n",
    "plt.title(\"Tox21 dataset diagram\")\n",
    "# Namimg the x and y axis\n",
    "plt.xlabel('Tox21_tasks')\n",
    "plt.ylabel('Cases')\n",
    "# Saving the plot as a 'png'\n",
    "plt.savefig('4BarPlot.png')\n",
    "# Displaying the bar plot\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "6CMhlAInzWOX"
   },
   "source": [
    "# Required functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "hidden": true,
    "id": "IzllOg474i99"
   },
   "outputs": [],
   "source": [
    "def create_dataset_with_gcn(ds, class_embed_vector, GCN, tasks):\n",
    "\n",
    "    created_data = []\n",
    "    data = np.arange(len(tasks))\n",
    "    onehot_encoded = to_categorical(data)\n",
    "    for numberTask, dataset in enumerate(ds):\n",
    "        for i, data in enumerate(dataset):\n",
    "            smiles, g, label, mask = data\n",
    "            g = g.to(device)\n",
    "            g = dgl.add_self_loop(g)\n",
    "            graph_feats = g.ndata.pop('h')\n",
    "            embbed = GCN(g, graph_feats)\n",
    "            embbed = embbed.to('cpu')\n",
    "            embbed = embbed.detach().numpy()\n",
    "            a = ( embbed, onehot_encoded[numberTask], class_embed_vector[numberTask], label, tasks[numberTask])\n",
    "            created_data.append(a)\n",
    "    print('Data created!!')\n",
    "    return created_data "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rINYL0dJAFdU"
   },
   "source": [
    "# **Drug-based strategy with BioAct-Het**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "zIKQi__XAcia"
   },
   "source": [
    "## Classification with BioAct-Het and AttentiveFp GCN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "hidden": true,
    "id": "PLqGlvfHzmiA",
    "outputId": "8933b18c-eac0-4f73-a6f8-a12bb2ac35eb"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading GCN_attentivefp_Tox21_pre_trained.pth from https://data.dgl.ai/dgllife/pre_trained/gcn_attentivefp_tox21.pth...\n",
      "Pretrained model loaded\n"
     ]
    }
   ],
   "source": [
    "model_name = 'GCN_attentivefp_Tox21'\n",
    "gcn_model = get_tox21_model(model_name)\n",
    "gcn_model.eval()\n",
    "gcn_model = gcn_model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6241\n",
      "Processing molecule 2000/6241\n",
      "Processing molecule 3000/6241\n",
      "Processing molecule 4000/6241\n",
      "Processing molecule 5000/6241\n",
      "Processing molecule 6000/6241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5859\n",
      "Processing molecule 2000/5859\n",
      "Processing molecule 3000/5859\n",
      "Processing molecule 4000/5859\n",
      "Processing molecule 5000/5859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5202\n",
      "Processing molecule 2000/5202\n",
      "Processing molecule 3000/5202\n",
      "Processing molecule 4000/5202\n",
      "Processing molecule 5000/5202\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4971\n",
      "Processing molecule 2000/4971\n",
      "Processing molecule 3000/4971\n",
      "Processing molecule 4000/4971\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4859\n",
      "Processing molecule 2000/4859\n",
      "Processing molecule 3000/4859\n",
      "Processing molecule 4000/4859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5941\n",
      "Processing molecule 2000/5941\n",
      "Processing molecule 3000/5941\n",
      "Processing molecule 4000/5941\n",
      "Processing molecule 5000/5941\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5645\n",
      "Processing molecule 2000/5645\n",
      "Processing molecule 3000/5645\n",
      "Processing molecule 4000/5645\n",
      "Processing molecule 5000/5645\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4403\n",
      "Processing molecule 2000/4403\n",
      "Processing molecule 3000/4403\n",
      "Processing molecule 4000/4403\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6122\n",
      "Processing molecule 2000/6122\n",
      "Processing molecule 3000/6122\n",
      "Processing molecule 4000/6122\n",
      "Processing molecule 5000/6122\n",
      "Processing molecule 6000/6122\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5497\n",
      "Processing molecule 2000/5497\n",
      "Processing molecule 3000/5497\n",
      "Processing molecule 4000/5497\n",
      "Processing molecule 5000/5497\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4397\n",
      "Processing molecule 2000/4397\n",
      "Processing molecule 3000/4397\n",
      "Processing molecule 4000/4397\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5728\n",
      "Processing molecule 2000/5728\n",
      "Processing molecule 3000/5728\n",
      "Processing molecule 4000/5728\n",
      "Processing molecule 5000/5728\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6523\n",
      "Processing molecule 2000/6523\n",
      "Processing molecule 3000/6523\n",
      "Processing molecule 4000/6523\n",
      "Processing molecule 5000/6523\n",
      "Processing molecule 6000/6523\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6075\n",
      "Processing molecule 2000/6075\n",
      "Processing molecule 3000/6075\n",
      "Processing molecule 4000/6075\n",
      "Processing molecule 5000/6075\n",
      "Processing molecule 6000/6075\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5876\n",
      "Processing molecule 2000/5876\n",
      "Processing molecule 3000/5876\n",
      "Processing molecule 4000/5876\n",
      "Processing molecule 5000/5876\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5247\n",
      "Processing molecule 2000/5247\n",
      "Processing molecule 3000/5247\n",
      "Processing molecule 4000/5247\n",
      "Processing molecule 5000/5247\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5566\n",
      "Processing molecule 2000/5566\n",
      "Processing molecule 3000/5566\n",
      "Processing molecule 4000/5566\n",
      "Processing molecule 5000/5566\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6255\n",
      "Processing molecule 2000/6255\n",
      "Processing molecule 3000/6255\n",
      "Processing molecule 4000/6255\n",
      "Processing molecule 5000/6255\n",
      "Processing molecule 6000/6255\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5248\n",
      "Processing molecule 2000/5248\n",
      "Processing molecule 3000/5248\n",
      "Processing molecule 4000/5248\n",
      "Processing molecule 5000/5248\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6352\n",
      "Processing molecule 2000/6352\n",
      "Processing molecule 3000/6352\n",
      "Processing molecule 4000/6352\n",
      "Processing molecule 5000/6352\n",
      "Processing molecule 6000/6352\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5827\n",
      "Processing molecule 2000/5827\n",
      "Processing molecule 3000/5827\n",
      "Processing molecule 4000/5827\n",
      "Processing molecule 5000/5827\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5232\n",
      "Processing molecule 2000/5232\n",
      "Processing molecule 3000/5232\n",
      "Processing molecule 4000/5232\n",
      "Processing molecule 5000/5232\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6095\n",
      "Processing molecule 2000/6095\n",
      "Processing molecule 3000/6095\n",
      "Processing molecule 4000/6095\n",
      "Processing molecule 5000/6095\n",
      "Processing molecule 6000/6095\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5235 - train negative label: 64865\n",
      "up and down sampling => train positive label: 31410 - train negative label: 32432\n",
      "Test positive label: 627 - Test negative label: 7219\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5676 - accuracy: 0.7187 - mae: 0.3801 - mse: 0.1897 - auc: 0.7878\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5074 - accuracy: 0.7659 - mae: 0.3337 - mse: 0.1651 - auc: 0.8371\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4872 - accuracy: 0.7750 - mae: 0.3190 - mse: 0.1577 - auc: 0.8502\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4721 - accuracy: 0.7822 - mae: 0.3080 - mse: 0.1525 - auc: 0.8594\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4639 - accuracy: 0.7874 - mae: 0.3017 - mse: 0.1495 - auc: 0.8646\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4538 - accuracy: 0.7928 - mae: 0.2942 - mse: 0.1457 - auc: 0.8709\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4478 - accuracy: 0.7954 - mae: 0.2898 - mse: 0.1436 - auc: 0.8746\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4388 - accuracy: 0.8002 - mae: 0.2838 - mse: 0.1405 - auc: 0.8797\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4329 - accuracy: 0.8040 - mae: 0.2793 - mse: 0.1383 - auc: 0.8832\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4265 - accuracy: 0.8073 - mae: 0.2751 - mse: 0.1360 - auc: 0.8869\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "76\n",
      "71\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4208 - accuracy: 0.8105 - mae: 0.2704 - mse: 0.1340 - auc: 0.8898\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4122 - accuracy: 0.8141 - mae: 0.2650 - mse: 0.1312 - auc: 0.8943\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4074 - accuracy: 0.8168 - mae: 0.2609 - mse: 0.1294 - auc: 0.8968\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4022 - accuracy: 0.8186 - mae: 0.2580 - mse: 0.1279 - auc: 0.8993\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3994 - accuracy: 0.8201 - mae: 0.2553 - mse: 0.1267 - auc: 0.9009\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3938 - accuracy: 0.8235 - mae: 0.2515 - mse: 0.1249 - auc: 0.9038\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3888 - accuracy: 0.8276 - mae: 0.2477 - mse: 0.1229 - auc: 0.9062\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3826 - accuracy: 0.8293 - mae: 0.2434 - mse: 0.1208 - auc: 0.9093\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3778 - accuracy: 0.8329 - mae: 0.2403 - mse: 0.1194 - auc: 0.9112\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3735 - accuracy: 0.8348 - mae: 0.2372 - mse: 0.1176 - auc: 0.9137\n",
      "83\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3692 - accuracy: 0.8372 - mae: 0.2344 - mse: 0.1162 - auc: 0.9157\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3643 - accuracy: 0.8386 - mae: 0.2306 - mse: 0.1144 - auc: 0.9181\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3610 - accuracy: 0.8401 - mae: 0.2291 - mse: 0.1137 - auc: 0.9191\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3531 - accuracy: 0.8437 - mae: 0.2232 - mse: 0.1110 - auc: 0.9225\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3521 - accuracy: 0.8451 - mae: 0.2226 - mse: 0.1104 - auc: 0.9230\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3492 - accuracy: 0.8464 - mae: 0.2205 - mse: 0.1093 - auc: 0.9245\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3422 - accuracy: 0.8497 - mae: 0.2155 - mse: 0.1070 - auc: 0.9276\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3387 - accuracy: 0.8535 - mae: 0.2127 - mse: 0.1057 - auc: 0.9288\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3347 - accuracy: 0.8540 - mae: 0.2102 - mse: 0.1043 - auc: 0.9305\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 2s 5ms/step - loss: 0.3331 - accuracy: 0.8526 - mae: 0.2094 - mse: 0.1042 - auc: 0.9311\n",
      "85\n",
      "85\n",
      "84\n",
      "84\n",
      "84\n",
      "84\n",
      "84\n",
      "83\n",
      "83\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3278 - accuracy: 0.8579 - mae: 0.2052 - mse: 0.1020 - auc: 0.9333\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3280 - accuracy: 0.8576 - mae: 0.2057 - mse: 0.1024 - auc: 0.9330\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3233 - accuracy: 0.8585 - mae: 0.2031 - mse: 0.1008 - auc: 0.9348\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3210 - accuracy: 0.8605 - mae: 0.2007 - mse: 0.0999 - auc: 0.9356\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3222 - accuracy: 0.8601 - mae: 0.2015 - mse: 0.1001 - auc: 0.9353\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3143 - accuracy: 0.8626 - mae: 0.1966 - mse: 0.0977 - auc: 0.9384\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3126 - accuracy: 0.8650 - mae: 0.1949 - mse: 0.0972 - auc: 0.9388\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3079 - accuracy: 0.8666 - mae: 0.1918 - mse: 0.0954 - auc: 0.9408\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3077 - accuracy: 0.8679 - mae: 0.1916 - mse: 0.0951 - auc: 0.9407\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3023 - accuracy: 0.8699 - mae: 0.1875 - mse: 0.0934 - auc: 0.9429\n",
      "86\n",
      "86\n",
      "86\n",
      "86\n",
      "86\n",
      "86\n",
      "85\n",
      "85\n",
      "85\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2997 - accuracy: 0.8716 - mae: 0.1856 - mse: 0.0924 - auc: 0.9439\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3010 - accuracy: 0.8702 - mae: 0.1874 - mse: 0.0929 - auc: 0.9435\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2957 - accuracy: 0.8734 - mae: 0.1836 - mse: 0.0912 - auc: 0.9454\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2949 - accuracy: 0.8753 - mae: 0.1823 - mse: 0.0908 - auc: 0.9455\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2927 - accuracy: 0.8757 - mae: 0.1809 - mse: 0.0900 - auc: 0.9462\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.2902 - accuracy: 0.8771 - mae: 0.1793 - mse: 0.0891 - auc: 0.9470\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2868 - accuracy: 0.8794 - mae: 0.1766 - mse: 0.0880 - auc: 0.9480\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2858 - accuracy: 0.8772 - mae: 0.1763 - mse: 0.0879 - auc: 0.9487\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2860 - accuracy: 0.8790 - mae: 0.1767 - mse: 0.0878 - auc: 0.9484\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2780 - accuracy: 0.8840 - mae: 0.1704 - mse: 0.0848 - auc: 0.9511\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "87\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2818 - accuracy: 0.8820 - mae: 0.1735 - mse: 0.0862 - auc: 0.9501\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2802 - accuracy: 0.8825 - mae: 0.1722 - mse: 0.0857 - auc: 0.9504\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2788 - accuracy: 0.8823 - mae: 0.1712 - mse: 0.0852 - auc: 0.9509\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2760 - accuracy: 0.8835 - mae: 0.1692 - mse: 0.0844 - auc: 0.9520\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2710 - accuracy: 0.8862 - mae: 0.1662 - mse: 0.0829 - auc: 0.9537\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2727 - accuracy: 0.8857 - mae: 0.1673 - mse: 0.0831 - auc: 0.9533\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2744 - accuracy: 0.8857 - mae: 0.1680 - mse: 0.0837 - auc: 0.9524\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2750 - accuracy: 0.8848 - mae: 0.1683 - mse: 0.0839 - auc: 0.9523\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2703 - accuracy: 0.8878 - mae: 0.1651 - mse: 0.0821 - auc: 0.9542\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.2680 - accuracy: 0.8886 - mae: 0.1638 - mse: 0.0815 - auc: 0.9548\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "88\n",
      "6\n",
      "246/246 [==============================] - 0s 700us/step - loss: 0.4034 - accuracy: 0.8132 - mae: 0.2276 - mse: 0.1249 - auc: 0.7792\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6267\n",
      "Processing molecule 2000/6267\n",
      "Processing molecule 3000/6267\n",
      "Processing molecule 4000/6267\n",
      "Processing molecule 5000/6267\n",
      "Processing molecule 6000/6267\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5878\n",
      "Processing molecule 2000/5878\n",
      "Processing molecule 3000/5878\n",
      "Processing molecule 4000/5878\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 5000/5878\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5221\n",
      "Processing molecule 2000/5221\n",
      "Processing molecule 3000/5221\n",
      "Processing molecule 4000/5221\n",
      "Processing molecule 5000/5221\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4983\n",
      "Processing molecule 2000/4983\n",
      "Processing molecule 3000/4983\n",
      "Processing molecule 4000/4983\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4871\n",
      "Processing molecule 2000/4871\n",
      "Processing molecule 3000/4871\n",
      "Processing molecule 4000/4871\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5951\n",
      "Processing molecule 2000/5951\n",
      "Processing molecule 3000/5951\n",
      "Processing molecule 4000/5951\n",
      "Processing molecule 5000/5951\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5635\n",
      "Processing molecule 2000/5635\n",
      "Processing molecule 3000/5635\n",
      "Processing molecule 4000/5635\n",
      "Processing molecule 5000/5635\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4402\n",
      "Processing molecule 2000/4402\n",
      "Processing molecule 3000/4402\n",
      "Processing molecule 4000/4402\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6132\n",
      "Processing molecule 2000/6132\n",
      "Processing molecule 3000/6132\n",
      "Processing molecule 4000/6132\n",
      "Processing molecule 5000/6132\n",
      "Processing molecule 6000/6132\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5464\n",
      "Processing molecule 2000/5464\n",
      "Processing molecule 3000/5464\n",
      "Processing molecule 4000/5464\n",
      "Processing molecule 5000/5464\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4409\n",
      "Processing molecule 2000/4409\n",
      "Processing molecule 3000/4409\n",
      "Processing molecule 4000/4409\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5726\n",
      "Processing molecule 2000/5726\n",
      "Processing molecule 3000/5726\n",
      "Processing molecule 4000/5726\n",
      "Processing molecule 5000/5726\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6542\n",
      "Processing molecule 2000/6542\n",
      "Processing molecule 3000/6542\n",
      "Processing molecule 4000/6542\n",
      "Processing molecule 5000/6542\n",
      "Processing molecule 6000/6542\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6094\n",
      "Processing molecule 2000/6094\n",
      "Processing molecule 3000/6094\n",
      "Processing molecule 4000/6094\n",
      "Processing molecule 5000/6094\n",
      "Processing molecule 6000/6094\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5908\n",
      "Processing molecule 2000/5908\n",
      "Processing molecule 3000/5908\n",
      "Processing molecule 4000/5908\n",
      "Processing molecule 5000/5908\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5254\n",
      "Processing molecule 2000/5254\n",
      "Processing molecule 3000/5254\n",
      "Processing molecule 4000/5254\n",
      "Processing molecule 5000/5254\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5571\n",
      "Processing molecule 2000/5571\n",
      "Processing molecule 3000/5571\n",
      "Processing molecule 4000/5571\n",
      "Processing molecule 5000/5571\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6271\n",
      "Processing molecule 2000/6271\n",
      "Processing molecule 3000/6271\n",
      "Processing molecule 4000/6271\n",
      "Processing molecule 5000/6271\n",
      "Processing molecule 6000/6271\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5258\n",
      "Processing molecule 2000/5258\n",
      "Processing molecule 3000/5258\n",
      "Processing molecule 4000/5258\n",
      "Processing molecule 5000/5258\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6368\n",
      "Processing molecule 2000/6368\n",
      "Processing molecule 3000/6368\n",
      "Processing molecule 4000/6368\n",
      "Processing molecule 5000/6368\n",
      "Processing molecule 6000/6368\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5801\n",
      "Processing molecule 2000/5801\n",
      "Processing molecule 3000/5801\n",
      "Processing molecule 4000/5801\n",
      "Processing molecule 5000/5801\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5241\n",
      "Processing molecule 2000/5241\n",
      "Processing molecule 3000/5241\n",
      "Processing molecule 4000/5241\n",
      "Processing molecule 5000/5241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6114\n",
      "Processing molecule 2000/6114\n",
      "Processing molecule 3000/6114\n",
      "Processing molecule 4000/6114\n",
      "Processing molecule 5000/6114\n",
      "Processing molecule 6000/6114\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Exception ignored in: <function ObjectBase.__del__ at 0x000002C1F4277B88>\n",
      "Traceback (most recent call last):\n",
      "  File \"C:\\Users\\Ali\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\_ffi\\_ctypes\\object.py\", line 57, in __del__\n",
      "    check_call(_LIB.DGLObjectFree(self.handle))\n",
      "KeyboardInterrupt\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_9004\\2143378403.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m    101\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    102\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 103\u001b[1;33m \u001b[0mscores\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mevaluate_model\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtox21_tasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_9004\\2143378403.py\u001b[0m in \u001b[0;36mevaluate_model\u001b[1;34m(df, k, shuffle, tasks)\u001b[0m\n\u001b[0;32m     32\u001b[0m         \u001b[0mtest_dataset\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mTox21_DATASET\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0md\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msmiles_to_bigraph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAttentiveFPAtomFeaturizer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtest_notnan\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     33\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 34\u001b[1;33m         \u001b[0mtrain_ds\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcreate_dataset_with_gcn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtrain_dataset\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0membed_class_tox21_train\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgcn_model\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     35\u001b[0m         \u001b[0mvalid_ds\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcreate_dataset_with_gcn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtest_dataset\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0membed_class_tox21_test\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgcn_model\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtasks\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     36\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_9004\\1866842678.py\u001b[0m in \u001b[0;36mcreate_dataset_with_gcn\u001b[1;34m(ds, class_embed_vector, GCN, tasks)\u001b[0m\n\u001b[0;32m     12\u001b[0m             \u001b[0mg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdgl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_self_loop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     13\u001b[0m             \u001b[0mgraph_feats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'h'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m             \u001b[0membbed\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mGCN\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgraph_feats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     15\u001b[0m             \u001b[0membbed\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0membbed\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'cpu'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     16\u001b[0m             \u001b[0membbed\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0membbed\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m   1192\u001b[0m         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m   1193\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1194\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1195\u001b[0m         \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1196\u001b[0m         \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgllife\\model\\model_zoo\\gcn_predictor.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, bg, feats)\u001b[0m\n\u001b[0;32m    118\u001b[0m             \u001b[1;33m*\u001b[0m \u001b[0mB\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mnumber\u001b[0m \u001b[0mof\u001b[0m \u001b[0mgraphs\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mbatch\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    119\u001b[0m         \"\"\"\n\u001b[1;32m--> 120\u001b[1;33m         \u001b[0mnode_feats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgnn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    121\u001b[0m         \u001b[0mgraph_feats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreadout\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnode_feats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    122\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgraph_feats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m   1192\u001b[0m         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m   1193\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1194\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1195\u001b[0m         \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1196\u001b[0m         \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgllife\\model\\gnn\\gcn.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, g, feats)\u001b[0m\n\u001b[0;32m    233\u001b[0m         \"\"\"\n\u001b[0;32m    234\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mgnn\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgnn_layers\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 235\u001b[1;33m             \u001b[0mfeats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgnn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    236\u001b[0m         \u001b[1;32mreturn\u001b[0m \u001b[0mfeats\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m   1192\u001b[0m         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m   1193\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1194\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1195\u001b[0m         \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1196\u001b[0m         \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgllife\\model\\gnn\\gcn.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, g, feats)\u001b[0m\n\u001b[0;32m     99\u001b[0m             \u001b[1;33m*\u001b[0m \u001b[0mM2\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mthe\u001b[0m \u001b[0moutput\u001b[0m \u001b[0mnode\u001b[0m \u001b[0mfeature\u001b[0m \u001b[0msize\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwhich\u001b[0m \u001b[0mmust\u001b[0m \u001b[0mmatch\u001b[0m \u001b[0mout_feats\u001b[0m \u001b[1;32min\u001b[0m \u001b[0minitialization\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    100\u001b[0m         \"\"\"\n\u001b[1;32m--> 101\u001b[1;33m         \u001b[0mnew_feats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgraph_conv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfeats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    102\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresidual\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    103\u001b[0m             \u001b[0mres_feats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mactivation\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mres_connection\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfeats\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\torch\\nn\\modules\\module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[1;34m(self, *input, **kwargs)\u001b[0m\n\u001b[0;32m   1192\u001b[0m         if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[0;32m   1193\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[1;32m-> 1194\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1195\u001b[0m         \u001b[1;31m# Do not call functions when jit is used\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1196\u001b[0m         \u001b[0mfull_backward_hooks\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\nn\\pytorch\\conv\\graphconv.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(self, graph, feat, weight, edge_weight)\u001b[0m\n\u001b[0;32m    429\u001b[0m                 \u001b[1;31m# aggregate first then mult W\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    430\u001b[0m                 \u001b[0mgraph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msrcdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'h'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfeat_src\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 431\u001b[1;33m                 \u001b[0mgraph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate_all\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maggregate_fn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'm'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'h'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    432\u001b[0m                 \u001b[0mrst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgraph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdstdata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'h'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    433\u001b[0m                 \u001b[1;32mif\u001b[0m \u001b[0mweight\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\heterograph.py\u001b[0m in \u001b[0;36mupdate_all\u001b[1;34m(self, message_func, reduce_func, apply_node_func, etype)\u001b[0m\n\u001b[0;32m   4779\u001b[0m             \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_graph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmetagraph\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_edge\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0metid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4780\u001b[0m             \u001b[0mg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0metype\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0metype\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4781\u001b[1;33m             \u001b[0mndata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmessage_passing\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmessage_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mapply_node_func\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   4782\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mcore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_builtin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreduce_func\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mreduce_func\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;34m'min'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'max'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mndata\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4783\u001b[0m                 \u001b[1;31m# Replace infinity with zero for isolated nodes\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\core.py\u001b[0m in \u001b[0;36mmessage_passing\u001b[1;34m(g, mfunc, rfunc, afunc)\u001b[0m\n\u001b[0;32m    388\u001b[0m     ):\n\u001b[0;32m    389\u001b[0m         \u001b[1;31m# invoke fused message passing\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 390\u001b[1;33m         \u001b[0mndata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minvoke_gspmm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrfunc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    391\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    392\u001b[0m         \u001b[1;31m# invoke message passing in two separate steps\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\core.py\u001b[0m in \u001b[0;36minvoke_gspmm\u001b[1;34m(graph, mfunc, rfunc, srcdata, dstdata, edata)\u001b[0m\n\u001b[0;32m    358\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m  \u001b[1;31m# \"copy_e\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    359\u001b[0m                 \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata_dict_to_list\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgraph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"e\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 360\u001b[1;33m         \u001b[0mz\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgraph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    361\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0mrfunc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mout_field\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mz\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    362\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\ops\\spmm.py\u001b[0m in \u001b[0;36mfunc\u001b[1;34m(g, x)\u001b[0m\n\u001b[0;32m    213\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    214\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mbinary_op\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"copy_u\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 215\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mgspmm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"copy_lhs\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    216\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    217\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mgspmm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"copy_rhs\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\ops\\spmm.py\u001b[0m in \u001b[0;36mgspmm\u001b[1;34m(g, op, reduce_op, lhs_data, rhs_data)\u001b[0m\n\u001b[0;32m     80\u001b[0m             \u001b[1;34m\"sum\"\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mreduce_op\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"mean\"\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     81\u001b[0m             \u001b[0mlhs_data\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 82\u001b[1;33m             \u001b[0mrhs_data\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     83\u001b[0m         )\n\u001b[0;32m     84\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\backend\\pytorch\\sparse.py\u001b[0m in \u001b[0;36mgspmm\u001b[1;34m(gidx, op, reduce_op, lhs_data, rhs_data)\u001b[0m\n\u001b[0;32m   1030\u001b[0m     \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_cast_if_autocast_enabled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgidx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlhs_data\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrhs_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1031\u001b[0m     \u001b[1;32mwith\u001b[0m \u001b[0m_disable_autocast_if_enabled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1032\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[0mGSpMM\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1033\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1034\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\backend\\pytorch\\sparse.py\u001b[0m in \u001b[0;36mforward\u001b[1;34m(ctx, gidx, op, reduce_op, X, Y)\u001b[0m\n\u001b[0;32m    163\u001b[0m     \u001b[1;33m@\u001b[0m\u001b[0mstaticmethod\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    164\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgidx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 165\u001b[1;33m         \u001b[0mout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0margX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margY\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_gspmm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgidx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreduce_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    166\u001b[0m         \u001b[0mreduce_last\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_need_reduce_last_dim\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    167\u001b[0m         \u001b[0mX_shape\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mX\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\_sparse_ops.py\u001b[0m in \u001b[0;36m_gspmm\u001b[1;34m(gidx, op, reduce_op, u, e)\u001b[0m\n\u001b[0;32m    245\u001b[0m             \u001b[0mto_dgl_nd_for_write\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    246\u001b[0m             \u001b[0marg_u_nd\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 247\u001b[1;33m             \u001b[0marg_e_nd\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    248\u001b[0m         )\n\u001b[0;32m    249\u001b[0m     \u001b[1;31m# NOTE(zihao): actually we can avoid the following step, because arg_*_nd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\anaconda3\\envs\\thesis\\lib\\site-packages\\dgl\\_ffi\\_ctypes\\function.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args)\u001b[0m\n\u001b[0;32m    218\u001b[0m                 \u001b[0mctypes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mc_int\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum_args\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    219\u001b[0m                 \u001b[0mctypes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbyref\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mret_val\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 220\u001b[1;33m                 \u001b[0mctypes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbyref\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mret_tcode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    221\u001b[0m             )\n\u001b[0;32m    222\u001b[0m         )\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "\n",
    "Epoch_S = 10\n",
    "\n",
    "def evaluate_model(df, k = 10 , shuffle = False, tasks = tox21_tasks):\n",
    "    result =[]    \n",
    "\n",
    "    kf = KFold(n_splits=10, shuffle= shuffle, random_state=None)\n",
    "    \n",
    "    for train_index, test_index in kf.split(df):\n",
    "\n",
    "        train = df.iloc[train_index]\n",
    "        test =  df.iloc[test_index]\n",
    "        \n",
    "        #Calculation of embedded vectors for each class\n",
    "        df_train_positive, df_train_negative = Separate_active_and_inactive_data(train, tasks)\n",
    "        df_test_positive, df_test_negative = Separate_active_and_inactive_data(test, tasks)\n",
    "        \n",
    "        dataset_positive_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_positive]\n",
    "        dataset_negative_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_negative]   \n",
    "        dataset_positive_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_positive]\n",
    "        dataset_negative_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_negative]\n",
    "        \n",
    "        embed_class_tox21_train = get_embedding_vector_class(dataset_positive_train, dataset_negative_train, radius=2, size = 512)\n",
    "        embed_class_tox21_test = get_embedding_vector_class(dataset_positive_test, dataset_negative_test, radius=2, size = 512)\n",
    "       \n",
    "        #create_dataset       \n",
    "        train_notnan = del_nan (train, tasks)\n",
    "        test_notnan = del_nan (test, tasks)\n",
    "\n",
    "        train_dataset = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in train_notnan]\n",
    "        test_dataset = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in test_notnan]\n",
    "          \n",
    "        train_ds = create_dataset_with_gcn(train_dataset, embed_class_tox21_train, gcn_model, tasks)\n",
    "        valid_ds = create_dataset_with_gcn(test_dataset, embed_class_tox21_test, gcn_model, tasks)\n",
    "        \n",
    "        label_pos , label_neg, _ , _ = count_lablel(train_ds)\n",
    "        print(f'train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "        \n",
    "        train_ds = up_and_down_Samplenig(train_ds, scale_downsampling = 0.5)\n",
    "        \n",
    "        label_pos , label_neg , _ , _ = count_lablel(train_ds)\n",
    "        print(f'up and down sampling => train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "\n",
    "        label_pos , label_neg, _ , _ = count_lablel(valid_ds)\n",
    "        print(f'Test positive label: {label_pos} - Test negative label: {label_neg}')\n",
    "\n",
    "        l_train = []\n",
    "        r_train = []\n",
    "        lbls_train = []\n",
    "        \n",
    "        l_valid = []\n",
    "        r_valid = []\n",
    "        lbls_valid = []\n",
    "\n",
    "        for i , data in enumerate(train_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_train.append(embbed_drug[0])\n",
    "            r_train.append(embbed_task)\n",
    "            lbls_train.append(lbl.tolist())\n",
    "        \n",
    "        for i , data in enumerate(valid_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_valid.append(embbed_drug[0])\n",
    "            r_valid.append(embbed_task)\n",
    "            lbls_valid.append(lbl.tolist())\n",
    "\n",
    "        l_train = np.array(l_train).reshape(-1,512,1)\n",
    "        r_train = np.array(r_train).reshape(-1,512,1)\n",
    "        lbls_train = np.array(lbls_train)\n",
    "\n",
    "        l_valid = np.array(l_valid).reshape(-1,512,1)\n",
    "        r_valid = np.array(r_valid).reshape(-1,512,1)\n",
    "        lbls_valid = np.array(lbls_valid)\n",
    "\n",
    "        # create neural network model\n",
    "        siamese_net = siamese_model_attentiveFp_tox21()\n",
    "        history = History()\n",
    "        P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "\n",
    "        for j in range(100):\n",
    "            C=1\n",
    "            Before = int(P.history['accuracy'][-1]*100)\n",
    "            for i in range(2,Epoch_S+1):\n",
    "                if  int(P.history['accuracy'][-i]*100)== Before:\n",
    "                    C=C+1\n",
    "                else:\n",
    "                    C=1\n",
    "                Before=int(P.history['accuracy'][-i]*100)\n",
    "                print(Before)\n",
    "            if C==Epoch_S:\n",
    "                break\n",
    "            P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "        print(j+1)\n",
    "        \n",
    "        score  = siamese_net.evaluate([l_valid,r_valid],lbls_valid, verbose=1)\n",
    "        a = (score[1],score[4])\n",
    "        result.append(a)\n",
    "    \n",
    "    return result\n",
    " \n",
    " \n",
    "scores = evaluate_model(df, 10, False, tox21_tasks)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "#### Dropout = 0.3 and downsampling = 0.5 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.8309966921806335, 0.771041989326477),\n",
       " (0.8410621881484985, 0.7880051732063293),\n",
       " (0.8567735552787781, 0.7801276445388794),\n",
       " (0.8227604627609253, 0.8001449108123779),\n",
       " (0.8309343457221985, 0.8106696605682373),\n",
       " (0.8623507022857666, 0.7970605492591858),\n",
       " (0.8101316094398499, 0.7712388634681702),\n",
       " (0.8488796353340149, 0.787397563457489),\n",
       " (0.8429239988327026, 0.808811604976654),\n",
       " (0.8173492550849915, 0.796164870262146)]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy= 0.8364162445068359 AUC= 0.7910662829875946 STD_AUC= 0.01334211294060164\n"
     ]
    }
   ],
   "source": [
    "acc = []\n",
    "auc = []\n",
    "for i in scores:\n",
    "    acc.append(i[0])\n",
    "    auc.append(i[1])\n",
    "\n",
    "print(f'accuracy= {np.mean(acc)} AUC= {np.mean(auc)} STD_AUC= {np.std(auc)}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "id": "_dyrk9nGcM81"
   },
   "source": [
    "## Classification with BioAct-Het and Canonical GCN "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "hidden": true,
    "id": "X5pnznxNzmiF",
    "outputId": "9a7ab5d3-9594-44f5-bddb-d47a6c996228"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading GCN_canonical_Tox21_pre_trained.pth from https://data.dgl.ai/dgllife/pre_trained/gcn_canonical_tox21.pth...\n",
      "Pretrained model loaded\n"
     ]
    }
   ],
   "source": [
    "model_name = 'GCN_canonical_Tox21'\n",
    "gcn_model = get_tox21_model(model_name)\n",
    "\n",
    "gcn_model.eval()\n",
    "gcn_model = gcn_model.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "background_save": true,
     "base_uri": "https://localhost:8080/"
    },
    "collapsed": true,
    "hidden": true,
    "id": "GoviV5WbzmiI",
    "outputId": "7d6726e0-4792-4d06-953e-648851f6117a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6241\n",
      "Processing molecule 2000/6241\n",
      "Processing molecule 3000/6241\n",
      "Processing molecule 4000/6241\n",
      "Processing molecule 5000/6241\n",
      "Processing molecule 6000/6241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5859\n",
      "Processing molecule 2000/5859\n",
      "Processing molecule 3000/5859\n",
      "Processing molecule 4000/5859\n",
      "Processing molecule 5000/5859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5202\n",
      "Processing molecule 2000/5202\n",
      "Processing molecule 3000/5202\n",
      "Processing molecule 4000/5202\n",
      "Processing molecule 5000/5202\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4971\n",
      "Processing molecule 2000/4971\n",
      "Processing molecule 3000/4971\n",
      "Processing molecule 4000/4971\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4859\n",
      "Processing molecule 2000/4859\n",
      "Processing molecule 3000/4859\n",
      "Processing molecule 4000/4859\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5941\n",
      "Processing molecule 2000/5941\n",
      "Processing molecule 3000/5941\n",
      "Processing molecule 4000/5941\n",
      "Processing molecule 5000/5941\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5645\n",
      "Processing molecule 2000/5645\n",
      "Processing molecule 3000/5645\n",
      "Processing molecule 4000/5645\n",
      "Processing molecule 5000/5645\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4403\n",
      "Processing molecule 2000/4403\n",
      "Processing molecule 3000/4403\n",
      "Processing molecule 4000/4403\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6122\n",
      "Processing molecule 2000/6122\n",
      "Processing molecule 3000/6122\n",
      "Processing molecule 4000/6122\n",
      "Processing molecule 5000/6122\n",
      "Processing molecule 6000/6122\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5497\n",
      "Processing molecule 2000/5497\n",
      "Processing molecule 3000/5497\n",
      "Processing molecule 4000/5497\n",
      "Processing molecule 5000/5497\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4397\n",
      "Processing molecule 2000/4397\n",
      "Processing molecule 3000/4397\n",
      "Processing molecule 4000/4397\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5728\n",
      "Processing molecule 2000/5728\n",
      "Processing molecule 3000/5728\n",
      "Processing molecule 4000/5728\n",
      "Processing molecule 5000/5728\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6523\n",
      "Processing molecule 2000/6523\n",
      "Processing molecule 3000/6523\n",
      "Processing molecule 4000/6523\n",
      "Processing molecule 5000/6523\n",
      "Processing molecule 6000/6523\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6075\n",
      "Processing molecule 2000/6075\n",
      "Processing molecule 3000/6075\n",
      "Processing molecule 4000/6075\n",
      "Processing molecule 5000/6075\n",
      "Processing molecule 6000/6075\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5876\n",
      "Processing molecule 2000/5876\n",
      "Processing molecule 3000/5876\n",
      "Processing molecule 4000/5876\n",
      "Processing molecule 5000/5876\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5247\n",
      "Processing molecule 2000/5247\n",
      "Processing molecule 3000/5247\n",
      "Processing molecule 4000/5247\n",
      "Processing molecule 5000/5247\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5566\n",
      "Processing molecule 2000/5566\n",
      "Processing molecule 3000/5566\n",
      "Processing molecule 4000/5566\n",
      "Processing molecule 5000/5566\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6255\n",
      "Processing molecule 2000/6255\n",
      "Processing molecule 3000/6255\n",
      "Processing molecule 4000/6255\n",
      "Processing molecule 5000/6255\n",
      "Processing molecule 6000/6255\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5248\n",
      "Processing molecule 2000/5248\n",
      "Processing molecule 3000/5248\n",
      "Processing molecule 4000/5248\n",
      "Processing molecule 5000/5248\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6352\n",
      "Processing molecule 2000/6352\n",
      "Processing molecule 3000/6352\n",
      "Processing molecule 4000/6352\n",
      "Processing molecule 5000/6352\n",
      "Processing molecule 6000/6352\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5827\n",
      "Processing molecule 2000/5827\n",
      "Processing molecule 3000/5827\n",
      "Processing molecule 4000/5827\n",
      "Processing molecule 5000/5827\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5232\n",
      "Processing molecule 2000/5232\n",
      "Processing molecule 3000/5232\n",
      "Processing molecule 4000/5232\n",
      "Processing molecule 5000/5232\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6095\n",
      "Processing molecule 2000/6095\n",
      "Processing molecule 3000/6095\n",
      "Processing molecule 4000/6095\n",
      "Processing molecule 5000/6095\n",
      "Processing molecule 6000/6095\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5235 - train negative label: 64865\n",
      "up and down sampling => train positive label: 31410 - train negative label: 32432\n",
      "Test positive label: 627 - Test negative label: 7219\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5697 - accuracy: 0.7129 - mae: 0.3851 - mse: 0.1916 - auc_17: 0.7825\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5177 - accuracy: 0.7570 - mae: 0.3431 - mse: 0.1698 - auc_17: 0.8273\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.5006 - accuracy: 0.7667 - mae: 0.3299 - mse: 0.1632 - auc_17: 0.8395\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4887 - accuracy: 0.7739 - mae: 0.3205 - mse: 0.1589 - auc_17: 0.8471\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4773 - accuracy: 0.7783 - mae: 0.3121 - mse: 0.1547 - auc_17: 0.8548\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4696 - accuracy: 0.7831 - mae: 0.3059 - mse: 0.1517 - auc_17: 0.8602\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4651 - accuracy: 0.7850 - mae: 0.3023 - mse: 0.1502 - auc_17: 0.8628\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4575 - accuracy: 0.7910 - mae: 0.2970 - mse: 0.1474 - auc_17: 0.8675\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4525 - accuracy: 0.7937 - mae: 0.2934 - mse: 0.1453 - auc_17: 0.8709\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4468 - accuracy: 0.7951 - mae: 0.2893 - mse: 0.1437 - auc_17: 0.8740\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4445 - accuracy: 0.7969 - mae: 0.2877 - mse: 0.1427 - auc_17: 0.8756\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4403 - accuracy: 0.7994 - mae: 0.2841 - mse: 0.1410 - auc_17: 0.8782\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4335 - accuracy: 0.8031 - mae: 0.2792 - mse: 0.1386 - auc_17: 0.8820\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4315 - accuracy: 0.8045 - mae: 0.2779 - mse: 0.1378 - auc_17: 0.8832\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4261 - accuracy: 0.8077 - mae: 0.2736 - mse: 0.1359 - auc_17: 0.8863\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4235 - accuracy: 0.8083 - mae: 0.2718 - mse: 0.1351 - auc_17: 0.8877\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4205 - accuracy: 0.8109 - mae: 0.2696 - mse: 0.1339 - auc_17: 0.8895\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4195 - accuracy: 0.8119 - mae: 0.2685 - mse: 0.1338 - auc_17: 0.8897\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4151 - accuracy: 0.8141 - mae: 0.2653 - mse: 0.1321 - auc_17: 0.8923\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4127 - accuracy: 0.8149 - mae: 0.2640 - mse: 0.1311 - auc_17: 0.8936\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4082 - accuracy: 0.8173 - mae: 0.2602 - mse: 0.1297 - auc_17: 0.8959\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4073 - accuracy: 0.8162 - mae: 0.2605 - mse: 0.1294 - auc_17: 0.8965\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4067 - accuracy: 0.8173 - mae: 0.2594 - mse: 0.1291 - auc_17: 0.8967\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4073 - accuracy: 0.8175 - mae: 0.2598 - mse: 0.1292 - auc_17: 0.8963\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4029 - accuracy: 0.8210 - mae: 0.2566 - mse: 0.1277 - auc_17: 0.8987\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4029 - accuracy: 0.8214 - mae: 0.2564 - mse: 0.1277 - auc_17: 0.8985\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4054 - accuracy: 0.8203 - mae: 0.2579 - mse: 0.1285 - auc_17: 0.8970\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4056 - accuracy: 0.8188 - mae: 0.2588 - mse: 0.1287 - auc_17: 0.8970\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4038 - accuracy: 0.8201 - mae: 0.2571 - mse: 0.1282 - auc_17: 0.8979\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4052 - accuracy: 0.8200 - mae: 0.2580 - mse: 0.1285 - auc_17: 0.8972\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4028 - accuracy: 0.8198 - mae: 0.2569 - mse: 0.1278 - auc_17: 0.8982\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4011 - accuracy: 0.8225 - mae: 0.2551 - mse: 0.1271 - auc_17: 0.8992\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3985 - accuracy: 0.8234 - mae: 0.2531 - mse: 0.1262 - auc_17: 0.9002\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3954 - accuracy: 0.8228 - mae: 0.2512 - mse: 0.1251 - auc_17: 0.9022\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3984 - accuracy: 0.8225 - mae: 0.2527 - mse: 0.1263 - auc_17: 0.9003\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3994 - accuracy: 0.8219 - mae: 0.2541 - mse: 0.1267 - auc_17: 0.8998\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4020 - accuracy: 0.8199 - mae: 0.2555 - mse: 0.1276 - auc_17: 0.8985\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4009 - accuracy: 0.8219 - mae: 0.2549 - mse: 0.1270 - auc_17: 0.8991\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4030 - accuracy: 0.8218 - mae: 0.2559 - mse: 0.1277 - auc_17: 0.8978\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4011 - accuracy: 0.8216 - mae: 0.2553 - mse: 0.1271 - auc_17: 0.8989\n",
      "82\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3988 - accuracy: 0.8235 - mae: 0.2535 - mse: 0.1263 - auc_17: 0.9001\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4005 - accuracy: 0.8239 - mae: 0.2541 - mse: 0.1269 - auc_17: 0.8989\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3971 - accuracy: 0.8238 - mae: 0.2521 - mse: 0.1259 - auc_17: 0.9007\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4025 - accuracy: 0.8190 - mae: 0.2568 - mse: 0.1280 - auc_17: 0.8978\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4047 - accuracy: 0.8197 - mae: 0.2574 - mse: 0.1287 - auc_17: 0.8968\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4036 - accuracy: 0.8203 - mae: 0.2571 - mse: 0.1282 - auc_17: 0.8972\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4018 - accuracy: 0.8199 - mae: 0.2563 - mse: 0.1278 - auc_17: 0.8983\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4004 - accuracy: 0.8200 - mae: 0.2548 - mse: 0.1272 - auc_17: 0.8990\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4018 - accuracy: 0.8198 - mae: 0.2558 - mse: 0.1277 - auc_17: 0.8984\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3979 - accuracy: 0.8224 - mae: 0.2536 - mse: 0.1266 - auc_17: 0.9001\n",
      "81\n",
      "82\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3988 - accuracy: 0.8205 - mae: 0.2546 - mse: 0.1269 - auc_17: 0.8997\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4041 - accuracy: 0.8180 - mae: 0.2586 - mse: 0.1287 - auc_17: 0.8969\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4036 - accuracy: 0.8173 - mae: 0.2576 - mse: 0.1286 - auc_17: 0.8972\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4023 - accuracy: 0.8200 - mae: 0.2564 - mse: 0.1279 - auc_17: 0.8975\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4034 - accuracy: 0.8189 - mae: 0.2575 - mse: 0.1285 - auc_17: 0.8969\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4010 - accuracy: 0.8210 - mae: 0.2557 - mse: 0.1276 - auc_17: 0.8982\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3992 - accuracy: 0.8202 - mae: 0.2547 - mse: 0.1270 - auc_17: 0.8993\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4006 - accuracy: 0.8186 - mae: 0.2558 - mse: 0.1277 - auc_17: 0.8984\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3994 - accuracy: 0.8197 - mae: 0.2544 - mse: 0.1273 - auc_17: 0.8990\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.3989 - accuracy: 0.8203 - mae: 0.2546 - mse: 0.1269 - auc_17: 0.8993\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3945 - accuracy: 0.8233 - mae: 0.2518 - mse: 0.1256 - auc_17: 0.9012\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3975 - accuracy: 0.8213 - mae: 0.2530 - mse: 0.1264 - auc_17: 0.8997\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.3990 - accuracy: 0.8222 - mae: 0.2544 - mse: 0.1270 - auc_17: 0.8984\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4033 - accuracy: 0.8196 - mae: 0.2577 - mse: 0.1285 - auc_17: 0.8964\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4030 - accuracy: 0.8206 - mae: 0.2569 - mse: 0.1282 - auc_17: 0.8965\n",
      "Epoch 6/10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4073 - accuracy: 0.8182 - mae: 0.2598 - mse: 0.1298 - auc_17: 0.8939\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4054 - accuracy: 0.8183 - mae: 0.2591 - mse: 0.1291 - auc_17: 0.8949\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4118 - accuracy: 0.8147 - mae: 0.2627 - mse: 0.1315 - auc_17: 0.8913\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4154 - accuracy: 0.8123 - mae: 0.2659 - mse: 0.1328 - auc_17: 0.8896\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4136 - accuracy: 0.8128 - mae: 0.2652 - mse: 0.1323 - auc_17: 0.8902\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4111 - accuracy: 0.8152 - mae: 0.2633 - mse: 0.1313 - auc_17: 0.8916\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4183 - accuracy: 0.8108 - mae: 0.2676 - mse: 0.1338 - auc_17: 0.8875\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4296 - accuracy: 0.8054 - mae: 0.2756 - mse: 0.1378 - auc_17: 0.8806\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4320 - accuracy: 0.8038 - mae: 0.2785 - mse: 0.1387 - auc_17: 0.8788\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4307 - accuracy: 0.8035 - mae: 0.2770 - mse: 0.1384 - auc_17: 0.8800\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4276 - accuracy: 0.8050 - mae: 0.2751 - mse: 0.1373 - auc_17: 0.8813\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4272 - accuracy: 0.8057 - mae: 0.2747 - mse: 0.1370 - auc_17: 0.8820\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4281 - accuracy: 0.8046 - mae: 0.2756 - mse: 0.1377 - auc_17: 0.8811\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4312 - accuracy: 0.8027 - mae: 0.2783 - mse: 0.1387 - auc_17: 0.8792\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 6ms/step - loss: 0.4325 - accuracy: 0.8018 - mae: 0.2788 - mse: 0.1391 - auc_17: 0.8786\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4325 - accuracy: 0.8007 - mae: 0.2793 - mse: 0.1394 - auc_17: 0.8782\n",
      "Epoch 2/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4311 - accuracy: 0.8030 - mae: 0.2781 - mse: 0.1388 - auc_17: 0.8791\n",
      "Epoch 3/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4316 - accuracy: 0.8034 - mae: 0.2780 - mse: 0.1387 - auc_17: 0.8791\n",
      "Epoch 4/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4329 - accuracy: 0.8039 - mae: 0.2788 - mse: 0.1392 - auc_17: 0.8785\n",
      "Epoch 5/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4275 - accuracy: 0.8050 - mae: 0.2756 - mse: 0.1375 - auc_17: 0.8808\n",
      "Epoch 6/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4284 - accuracy: 0.8035 - mae: 0.2762 - mse: 0.1379 - auc_17: 0.8804\n",
      "Epoch 7/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4287 - accuracy: 0.8037 - mae: 0.2770 - mse: 0.1379 - auc_17: 0.8804\n",
      "Epoch 8/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4271 - accuracy: 0.8038 - mae: 0.2752 - mse: 0.1376 - auc_17: 0.8807\n",
      "Epoch 9/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4274 - accuracy: 0.8021 - mae: 0.2757 - mse: 0.1379 - auc_17: 0.8810\n",
      "Epoch 10/10\n",
      "499/499 [==============================] - 3s 5ms/step - loss: 0.4253 - accuracy: 0.8041 - mae: 0.2743 - mse: 0.1370 - auc_17: 0.8824\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "9\n",
      "246/246 [==============================] - 0s 842us/step - loss: 0.3543 - accuracy: 0.8369 - mae: 0.2337 - mse: 0.1108 - auc_17: 0.7962\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6267\n",
      "Processing molecule 2000/6267\n",
      "Processing molecule 3000/6267\n",
      "Processing molecule 4000/6267\n",
      "Processing molecule 5000/6267\n",
      "Processing molecule 6000/6267\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5878\n",
      "Processing molecule 2000/5878\n",
      "Processing molecule 3000/5878\n",
      "Processing molecule 4000/5878\n",
      "Processing molecule 5000/5878\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5221\n",
      "Processing molecule 2000/5221\n",
      "Processing molecule 3000/5221\n",
      "Processing molecule 4000/5221\n",
      "Processing molecule 5000/5221\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4983\n",
      "Processing molecule 2000/4983\n",
      "Processing molecule 3000/4983\n",
      "Processing molecule 4000/4983\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4871\n",
      "Processing molecule 2000/4871\n",
      "Processing molecule 3000/4871\n",
      "Processing molecule 4000/4871\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5951\n",
      "Processing molecule 2000/5951\n",
      "Processing molecule 3000/5951\n",
      "Processing molecule 4000/5951\n",
      "Processing molecule 5000/5951\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5635\n",
      "Processing molecule 2000/5635\n",
      "Processing molecule 3000/5635\n",
      "Processing molecule 4000/5635\n",
      "Processing molecule 5000/5635\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4402\n",
      "Processing molecule 2000/4402\n",
      "Processing molecule 3000/4402\n",
      "Processing molecule 4000/4402\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6132\n",
      "Processing molecule 2000/6132\n",
      "Processing molecule 3000/6132\n",
      "Processing molecule 4000/6132\n",
      "Processing molecule 5000/6132\n",
      "Processing molecule 6000/6132\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5464\n",
      "Processing molecule 2000/5464\n",
      "Processing molecule 3000/5464\n",
      "Processing molecule 4000/5464\n",
      "Processing molecule 5000/5464\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4409\n",
      "Processing molecule 2000/4409\n",
      "Processing molecule 3000/4409\n",
      "Processing molecule 4000/4409\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5726\n",
      "Processing molecule 2000/5726\n",
      "Processing molecule 3000/5726\n",
      "Processing molecule 4000/5726\n",
      "Processing molecule 5000/5726\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6542\n",
      "Processing molecule 2000/6542\n",
      "Processing molecule 3000/6542\n",
      "Processing molecule 4000/6542\n",
      "Processing molecule 5000/6542\n",
      "Processing molecule 6000/6542\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6094\n",
      "Processing molecule 2000/6094\n",
      "Processing molecule 3000/6094\n",
      "Processing molecule 4000/6094\n",
      "Processing molecule 5000/6094\n",
      "Processing molecule 6000/6094\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5908\n",
      "Processing molecule 2000/5908\n",
      "Processing molecule 3000/5908\n",
      "Processing molecule 4000/5908\n",
      "Processing molecule 5000/5908\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5254\n",
      "Processing molecule 2000/5254\n",
      "Processing molecule 3000/5254\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 4000/5254\n",
      "Processing molecule 5000/5254\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5571\n",
      "Processing molecule 2000/5571\n",
      "Processing molecule 3000/5571\n",
      "Processing molecule 4000/5571\n",
      "Processing molecule 5000/5571\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6271\n",
      "Processing molecule 2000/6271\n",
      "Processing molecule 3000/6271\n",
      "Processing molecule 4000/6271\n",
      "Processing molecule 5000/6271\n",
      "Processing molecule 6000/6271\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5804\n",
      "Processing molecule 2000/5804\n",
      "Processing molecule 3000/5804\n",
      "Processing molecule 4000/5804\n",
      "Processing molecule 5000/5804\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5258\n",
      "Processing molecule 2000/5258\n",
      "Processing molecule 3000/5258\n",
      "Processing molecule 4000/5258\n",
      "Processing molecule 5000/5258\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6368\n",
      "Processing molecule 2000/6368\n",
      "Processing molecule 3000/6368\n",
      "Processing molecule 4000/6368\n",
      "Processing molecule 5000/6368\n",
      "Processing molecule 6000/6368\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5801\n",
      "Processing molecule 2000/5801\n",
      "Processing molecule 3000/5801\n",
      "Processing molecule 4000/5801\n",
      "Processing molecule 5000/5801\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5241\n",
      "Processing molecule 2000/5241\n",
      "Processing molecule 3000/5241\n",
      "Processing molecule 4000/5241\n",
      "Processing molecule 5000/5241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6114\n",
      "Processing molecule 2000/6114\n",
      "Processing molecule 3000/6114\n",
      "Processing molecule 4000/6114\n",
      "Processing molecule 5000/6114\n",
      "Processing molecule 6000/6114\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5287 - train negative label: 64939\n",
      "up and down sampling => train positive label: 31722 - train negative label: 32469\n",
      "Test positive label: 575 - Test negative label: 7145\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5759 - accuracy: 0.7092 - mae: 0.3903 - mse: 0.1943 - auc_18: 0.7768\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5185 - accuracy: 0.7584 - mae: 0.3437 - mse: 0.1701 - auc_18: 0.8264\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5031 - accuracy: 0.7647 - mae: 0.3320 - mse: 0.1646 - auc_18: 0.8367\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4886 - accuracy: 0.7731 - mae: 0.3210 - mse: 0.1588 - auc_18: 0.8472\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4784 - accuracy: 0.7768 - mae: 0.3133 - mse: 0.1553 - auc_18: 0.8539\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4701 - accuracy: 0.7817 - mae: 0.3066 - mse: 0.1521 - auc_18: 0.8596\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4643 - accuracy: 0.7862 - mae: 0.3025 - mse: 0.1499 - auc_18: 0.8635\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4548 - accuracy: 0.7899 - mae: 0.2958 - mse: 0.1467 - auc_18: 0.8690\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4487 - accuracy: 0.7931 - mae: 0.2913 - mse: 0.1443 - auc_18: 0.8730\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4422 - accuracy: 0.7982 - mae: 0.2860 - mse: 0.1418 - auc_18: 0.8769\n",
      "79\n",
      "78\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4382 - accuracy: 0.8002 - mae: 0.2832 - mse: 0.1407 - auc_18: 0.8789\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4353 - accuracy: 0.8025 - mae: 0.2805 - mse: 0.1392 - auc_18: 0.8810\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4293 - accuracy: 0.8068 - mae: 0.2762 - mse: 0.1371 - auc_18: 0.8843\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4267 - accuracy: 0.8061 - mae: 0.2744 - mse: 0.1363 - auc_18: 0.8859\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4214 - accuracy: 0.8114 - mae: 0.2703 - mse: 0.1341 - auc_18: 0.8889\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4195 - accuracy: 0.8114 - mae: 0.2689 - mse: 0.1338 - auc_18: 0.8895\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4165 - accuracy: 0.8127 - mae: 0.2669 - mse: 0.1326 - auc_18: 0.8914\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 14ms/step - loss: 0.4172 - accuracy: 0.8128 - mae: 0.2662 - mse: 0.1326 - auc_18: 0.8911\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4195 - accuracy: 0.8104 - mae: 0.2687 - mse: 0.1338 - auc_18: 0.8895\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4154 - accuracy: 0.8138 - mae: 0.2652 - mse: 0.1320 - auc_18: 0.8919\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4160 - accuracy: 0.8128 - mae: 0.2660 - mse: 0.1325 - auc_18: 0.8913\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4136 - accuracy: 0.8143 - mae: 0.2644 - mse: 0.1314 - auc_18: 0.8928\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4134 - accuracy: 0.8142 - mae: 0.2642 - mse: 0.1315 - auc_18: 0.8927\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4167 - accuracy: 0.8139 - mae: 0.2659 - mse: 0.1325 - auc_18: 0.8908\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4154 - accuracy: 0.8139 - mae: 0.2652 - mse: 0.1321 - auc_18: 0.8913\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4128 - accuracy: 0.8142 - mae: 0.2640 - mse: 0.1316 - auc_18: 0.8926\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4118 - accuracy: 0.8163 - mae: 0.2626 - mse: 0.1309 - auc_18: 0.8932\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4106 - accuracy: 0.8153 - mae: 0.2624 - mse: 0.1306 - auc_18: 0.8939\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4108 - accuracy: 0.8162 - mae: 0.2623 - mse: 0.1308 - auc_18: 0.8937\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4115 - accuracy: 0.8153 - mae: 0.2622 - mse: 0.1311 - auc_18: 0.8932\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "242/242 [==============================] - 0s 2ms/step - loss: 0.2743 - accuracy: 0.8724 - mae: 0.1603 - mse: 0.0832 - auc_18: 0.7902\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6263\n",
      "Processing molecule 2000/6263\n",
      "Processing molecule 3000/6263\n",
      "Processing molecule 4000/6263\n",
      "Processing molecule 5000/6263\n",
      "Processing molecule 6000/6263\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5883\n",
      "Processing molecule 2000/5883\n",
      "Processing molecule 3000/5883\n",
      "Processing molecule 4000/5883\n",
      "Processing molecule 5000/5883\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5201\n",
      "Processing molecule 2000/5201\n",
      "Processing molecule 3000/5201\n",
      "Processing molecule 4000/5201\n",
      "Processing molecule 5000/5201\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4975\n",
      "Processing molecule 2000/4975\n",
      "Processing molecule 3000/4975\n",
      "Processing molecule 4000/4975\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4851\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 2000/4851\n",
      "Processing molecule 3000/4851\n",
      "Processing molecule 4000/4851\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5937\n",
      "Processing molecule 2000/5937\n",
      "Processing molecule 3000/5937\n",
      "Processing molecule 4000/5937\n",
      "Processing molecule 5000/5937\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5648\n",
      "Processing molecule 2000/5648\n",
      "Processing molecule 3000/5648\n",
      "Processing molecule 4000/5648\n",
      "Processing molecule 5000/5648\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4396\n",
      "Processing molecule 2000/4396\n",
      "Processing molecule 3000/4396\n",
      "Processing molecule 4000/4396\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6133\n",
      "Processing molecule 2000/6133\n",
      "Processing molecule 3000/6133\n",
      "Processing molecule 4000/6133\n",
      "Processing molecule 5000/6133\n",
      "Processing molecule 6000/6133\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5483\n",
      "Processing molecule 2000/5483\n",
      "Processing molecule 3000/5483\n",
      "Processing molecule 4000/5483\n",
      "Processing molecule 5000/5483\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4422\n",
      "Processing molecule 2000/4422\n",
      "Processing molecule 3000/4422\n",
      "Processing molecule 4000/4422\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5726\n",
      "Processing molecule 2000/5726\n",
      "Processing molecule 3000/5726\n",
      "Processing molecule 4000/5726\n",
      "Processing molecule 5000/5726\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6543\n",
      "Processing molecule 2000/6543\n",
      "Processing molecule 3000/6543\n",
      "Processing molecule 4000/6543\n",
      "Processing molecule 5000/6543\n",
      "Processing molecule 6000/6543\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6096\n",
      "Processing molecule 2000/6096\n",
      "Processing molecule 3000/6096\n",
      "Processing molecule 4000/6096\n",
      "Processing molecule 5000/6096\n",
      "Processing molecule 6000/6096\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5899\n",
      "Processing molecule 2000/5899\n",
      "Processing molecule 3000/5899\n",
      "Processing molecule 4000/5899\n",
      "Processing molecule 5000/5899\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5242\n",
      "Processing molecule 2000/5242\n",
      "Processing molecule 3000/5242\n",
      "Processing molecule 4000/5242\n",
      "Processing molecule 5000/5242\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5585\n",
      "Processing molecule 2000/5585\n",
      "Processing molecule 3000/5585\n",
      "Processing molecule 4000/5585\n",
      "Processing molecule 5000/5585\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6258\n",
      "Processing molecule 2000/6258\n",
      "Processing molecule 3000/6258\n",
      "Processing molecule 4000/6258\n",
      "Processing molecule 5000/6258\n",
      "Processing molecule 6000/6258\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5822\n",
      "Processing molecule 2000/5822\n",
      "Processing molecule 3000/5822\n",
      "Processing molecule 4000/5822\n",
      "Processing molecule 5000/5822\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6366\n",
      "Processing molecule 2000/6366\n",
      "Processing molecule 3000/6366\n",
      "Processing molecule 4000/6366\n",
      "Processing molecule 5000/6366\n",
      "Processing molecule 6000/6366\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5811\n",
      "Processing molecule 2000/5811\n",
      "Processing molecule 3000/5811\n",
      "Processing molecule 4000/5811\n",
      "Processing molecule 5000/5811\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5244\n",
      "Processing molecule 2000/5244\n",
      "Processing molecule 3000/5244\n",
      "Processing molecule 4000/5244\n",
      "Processing molecule 5000/5244\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6105\n",
      "Processing molecule 2000/6105\n",
      "Processing molecule 3000/6105\n",
      "Processing molecule 4000/6105\n",
      "Processing molecule 5000/6105\n",
      "Processing molecule 6000/6105\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5292 - train negative label: 64918\n",
      "up and down sampling => train positive label: 31752 - train negative label: 32459\n",
      "Test positive label: 570 - Test negative label: 7166\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.6058 - accuracy: 0.6823 - mae: 0.4156 - mse: 0.2073 - auc_19: 0.7432\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5323 - accuracy: 0.7478 - mae: 0.3544 - mse: 0.1757 - auc_19: 0.8152\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.5091 - accuracy: 0.7619 - mae: 0.3362 - mse: 0.1664 - auc_19: 0.8334\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4977 - accuracy: 0.7673 - mae: 0.3276 - mse: 0.1624 - auc_19: 0.8408\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4845 - accuracy: 0.7747 - mae: 0.3174 - mse: 0.1574 - auc_19: 0.8499\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4770 - accuracy: 0.7768 - mae: 0.3119 - mse: 0.1547 - auc_19: 0.8550\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4694 - accuracy: 0.7798 - mae: 0.3066 - mse: 0.1519 - auc_19: 0.8598\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4632 - accuracy: 0.7850 - mae: 0.3017 - mse: 0.1498 - auc_19: 0.8636\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4599 - accuracy: 0.7869 - mae: 0.2985 - mse: 0.1485 - auc_19: 0.8658\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4550 - accuracy: 0.7880 - mae: 0.2953 - mse: 0.1467 - auc_19: 0.8688\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "76\n",
      "74\n",
      "68\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4490 - accuracy: 0.7919 - mae: 0.2915 - mse: 0.1445 - auc_19: 0.8727\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4438 - accuracy: 0.7947 - mae: 0.2869 - mse: 0.1426 - auc_19: 0.8759\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4389 - accuracy: 0.7990 - mae: 0.2825 - mse: 0.1405 - auc_19: 0.8789\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4350 - accuracy: 0.8003 - mae: 0.2802 - mse: 0.1395 - auc_19: 0.8809\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4309 - accuracy: 0.8023 - mae: 0.2774 - mse: 0.1379 - auc_19: 0.8833\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4275 - accuracy: 0.8052 - mae: 0.2744 - mse: 0.1365 - auc_19: 0.8853\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4264 - accuracy: 0.8046 - mae: 0.2740 - mse: 0.1362 - auc_19: 0.8859\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4188 - accuracy: 0.8093 - mae: 0.2681 - mse: 0.1336 - auc_19: 0.8901\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4194 - accuracy: 0.8093 - mae: 0.2687 - mse: 0.1337 - auc_19: 0.8898\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 13ms/step - loss: 0.4184 - accuracy: 0.8112 - mae: 0.2677 - mse: 0.1334 - auc_19: 0.8902\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4125 - accuracy: 0.8141 - mae: 0.2634 - mse: 0.1310 - auc_19: 0.8936\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4133 - accuracy: 0.8138 - mae: 0.2639 - mse: 0.1315 - auc_19: 0.8930\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4108 - accuracy: 0.8156 - mae: 0.2621 - mse: 0.1307 - auc_19: 0.8942\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4085 - accuracy: 0.8152 - mae: 0.2608 - mse: 0.1299 - auc_19: 0.8956\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4079 - accuracy: 0.8179 - mae: 0.2598 - mse: 0.1294 - auc_19: 0.8959\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4068 - accuracy: 0.8177 - mae: 0.2590 - mse: 0.1292 - auc_19: 0.8964\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4079 - accuracy: 0.8173 - mae: 0.2597 - mse: 0.1295 - auc_19: 0.8959\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4063 - accuracy: 0.8193 - mae: 0.2586 - mse: 0.1288 - auc_19: 0.8967\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4049 - accuracy: 0.8196 - mae: 0.2580 - mse: 0.1286 - auc_19: 0.8973\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4052 - accuracy: 0.8202 - mae: 0.2579 - mse: 0.1286 - auc_19: 0.8972\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4021 - accuracy: 0.8208 - mae: 0.2554 - mse: 0.1276 - auc_19: 0.8986\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3980 - accuracy: 0.8226 - mae: 0.2533 - mse: 0.1262 - auc_19: 0.9009\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4018 - accuracy: 0.8228 - mae: 0.2550 - mse: 0.1271 - auc_19: 0.8988\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4011 - accuracy: 0.8228 - mae: 0.2545 - mse: 0.1270 - auc_19: 0.8990\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.4003 - accuracy: 0.8236 - mae: 0.2544 - mse: 0.1267 - auc_19: 0.8997\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3983 - accuracy: 0.8249 - mae: 0.2519 - mse: 0.1259 - auc_19: 0.9006\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3951 - accuracy: 0.8254 - mae: 0.2511 - mse: 0.1250 - auc_19: 0.9021\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3955 - accuracy: 0.8258 - mae: 0.2508 - mse: 0.1251 - auc_19: 0.9020\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3943 - accuracy: 0.8257 - mae: 0.2501 - mse: 0.1247 - auc_19: 0.9025\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 6s 13ms/step - loss: 0.3962 - accuracy: 0.8248 - mae: 0.2508 - mse: 0.1252 - auc_19: 0.9017\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "4\n",
      "242/242 [==============================] - 0s 1ms/step - loss: 0.2695 - accuracy: 0.8918 - mae: 0.1750 - mse: 0.0794 - auc_19: 0.8239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6256\n",
      "Processing molecule 2000/6256\n",
      "Processing molecule 3000/6256\n",
      "Processing molecule 4000/6256\n",
      "Processing molecule 5000/6256\n",
      "Processing molecule 6000/6256\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5863\n",
      "Processing molecule 2000/5863\n",
      "Processing molecule 3000/5863\n",
      "Processing molecule 4000/5863\n",
      "Processing molecule 5000/5863\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5194\n",
      "Processing molecule 2000/5194\n",
      "Processing molecule 3000/5194\n",
      "Processing molecule 4000/5194\n",
      "Processing molecule 5000/5194\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4970\n",
      "Processing molecule 2000/4970\n",
      "Processing molecule 3000/4970\n",
      "Processing molecule 4000/4970\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4854\n",
      "Processing molecule 2000/4854\n",
      "Processing molecule 3000/4854\n",
      "Processing molecule 4000/4854\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5943\n",
      "Processing molecule 2000/5943\n",
      "Processing molecule 3000/5943\n",
      "Processing molecule 4000/5943\n",
      "Processing molecule 5000/5943\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5633\n",
      "Processing molecule 2000/5633\n",
      "Processing molecule 3000/5633\n",
      "Processing molecule 4000/5633\n",
      "Processing molecule 5000/5633\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4401\n",
      "Processing molecule 2000/4401\n",
      "Processing molecule 3000/4401\n",
      "Processing molecule 4000/4401\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6134\n",
      "Processing molecule 2000/6134\n",
      "Processing molecule 3000/6134\n",
      "Processing molecule 4000/6134\n",
      "Processing molecule 5000/6134\n",
      "Processing molecule 6000/6134\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5478\n",
      "Processing molecule 2000/5478\n",
      "Processing molecule 3000/5478\n",
      "Processing molecule 4000/5478\n",
      "Processing molecule 5000/5478\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4401\n",
      "Processing molecule 2000/4401\n",
      "Processing molecule 3000/4401\n",
      "Processing molecule 4000/4401\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5711\n",
      "Processing molecule 2000/5711\n",
      "Processing molecule 3000/5711\n",
      "Processing molecule 4000/5711\n",
      "Processing molecule 5000/5711\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6538\n",
      "Processing molecule 2000/6538\n",
      "Processing molecule 3000/6538\n",
      "Processing molecule 4000/6538\n",
      "Processing molecule 5000/6538\n",
      "Processing molecule 6000/6538\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6075\n",
      "Processing molecule 2000/6075\n",
      "Processing molecule 3000/6075\n",
      "Processing molecule 4000/6075\n",
      "Processing molecule 5000/6075\n",
      "Processing molecule 6000/6075\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5894\n",
      "Processing molecule 2000/5894\n",
      "Processing molecule 3000/5894\n",
      "Processing molecule 4000/5894\n",
      "Processing molecule 5000/5894\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5580\n",
      "Processing molecule 2000/5580\n",
      "Processing molecule 3000/5580\n",
      "Processing molecule 4000/5580\n",
      "Processing molecule 5000/5580\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6261\n",
      "Processing molecule 2000/6261\n",
      "Processing molecule 3000/6261\n",
      "Processing molecule 4000/6261\n",
      "Processing molecule 5000/6261\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 6000/6261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5807\n",
      "Processing molecule 2000/5807\n",
      "Processing molecule 3000/5807\n",
      "Processing molecule 4000/5807\n",
      "Processing molecule 5000/5807\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5241\n",
      "Processing molecule 2000/5241\n",
      "Processing molecule 3000/5241\n",
      "Processing molecule 4000/5241\n",
      "Processing molecule 5000/5241\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6369\n",
      "Processing molecule 2000/6369\n",
      "Processing molecule 3000/6369\n",
      "Processing molecule 4000/6369\n",
      "Processing molecule 5000/6369\n",
      "Processing molecule 6000/6369\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5813\n",
      "Processing molecule 2000/5813\n",
      "Processing molecule 3000/5813\n",
      "Processing molecule 4000/5813\n",
      "Processing molecule 5000/5813\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6095\n",
      "Processing molecule 2000/6095\n",
      "Processing molecule 3000/6095\n",
      "Processing molecule 4000/6095\n",
      "Processing molecule 5000/6095\n",
      "Processing molecule 6000/6095\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5305 - train negative label: 64838\n",
      "up and down sampling => train positive label: 31830 - train negative label: 32419\n",
      "Test positive label: 557 - Test negative label: 7246\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5800 - accuracy: 0.7040 - mae: 0.3929 - mse: 0.1963 - auc_20: 0.7704\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5189 - accuracy: 0.7556 - mae: 0.3439 - mse: 0.1706 - auc_20: 0.8253\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.5001 - accuracy: 0.7654 - mae: 0.3295 - mse: 0.1636 - auc_20: 0.8386\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4881 - accuracy: 0.7707 - mae: 0.3206 - mse: 0.1589 - auc_20: 0.8474\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4780 - accuracy: 0.7762 - mae: 0.3130 - mse: 0.1552 - auc_20: 0.8541\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4704 - accuracy: 0.7829 - mae: 0.3070 - mse: 0.1520 - auc_20: 0.8594\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4627 - accuracy: 0.7865 - mae: 0.3010 - mse: 0.1493 - auc_20: 0.8642\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4576 - accuracy: 0.7888 - mae: 0.2970 - mse: 0.1473 - auc_20: 0.8675\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4524 - accuracy: 0.7919 - mae: 0.2933 - mse: 0.1453 - auc_20: 0.8709\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4456 - accuracy: 0.7971 - mae: 0.2879 - mse: 0.1428 - auc_20: 0.8749\n",
      "79\n",
      "78\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4436 - accuracy: 0.7982 - mae: 0.2862 - mse: 0.1422 - auc_20: 0.8760\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4390 - accuracy: 0.8003 - mae: 0.2827 - mse: 0.1404 - auc_20: 0.8788\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4349 - accuracy: 0.8029 - mae: 0.2797 - mse: 0.1389 - auc_20: 0.8813\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4304 - accuracy: 0.8068 - mae: 0.2761 - mse: 0.1371 - auc_20: 0.8840\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4269 - accuracy: 0.8079 - mae: 0.2742 - mse: 0.1361 - auc_20: 0.8858\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4199 - accuracy: 0.8113 - mae: 0.2686 - mse: 0.1336 - auc_20: 0.8896\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4192 - accuracy: 0.8105 - mae: 0.2683 - mse: 0.1333 - auc_20: 0.8901\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4171 - accuracy: 0.8125 - mae: 0.2658 - mse: 0.1326 - auc_20: 0.8911\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4203 - accuracy: 0.8112 - mae: 0.2686 - mse: 0.1338 - auc_20: 0.8895\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4188 - accuracy: 0.8124 - mae: 0.2680 - mse: 0.1333 - auc_20: 0.8901\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4197 - accuracy: 0.8130 - mae: 0.2680 - mse: 0.1334 - auc_20: 0.8894\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4201 - accuracy: 0.8138 - mae: 0.2684 - mse: 0.1337 - auc_20: 0.8891\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4184 - accuracy: 0.8129 - mae: 0.2671 - mse: 0.1332 - auc_20: 0.8903\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4182 - accuracy: 0.8123 - mae: 0.2676 - mse: 0.1331 - auc_20: 0.8902\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4169 - accuracy: 0.8148 - mae: 0.2660 - mse: 0.1325 - auc_20: 0.8909\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4140 - accuracy: 0.8142 - mae: 0.2646 - mse: 0.1318 - auc_20: 0.8923\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4132 - accuracy: 0.8145 - mae: 0.2637 - mse: 0.1314 - auc_20: 0.8927\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4077 - accuracy: 0.8169 - mae: 0.2594 - mse: 0.1293 - auc_20: 0.8960\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4116 - accuracy: 0.8157 - mae: 0.2621 - mse: 0.1308 - auc_20: 0.8935\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 7s 15ms/step - loss: 0.4099 - accuracy: 0.8176 - mae: 0.2607 - mse: 0.1300 - auc_20: 0.8946\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "244/244 [==============================] - 0s 2ms/step - loss: 0.3364 - accuracy: 0.8417 - mae: 0.2215 - mse: 0.1051 - auc_20: 0.8028\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6237\n",
      "Processing molecule 2000/6237\n",
      "Processing molecule 3000/6237\n",
      "Processing molecule 4000/6237\n",
      "Processing molecule 5000/6237\n",
      "Processing molecule 6000/6237\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5846\n",
      "Processing molecule 2000/5846\n",
      "Processing molecule 3000/5846\n",
      "Processing molecule 4000/5846\n",
      "Processing molecule 5000/5846\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5196\n",
      "Processing molecule 2000/5196\n",
      "Processing molecule 3000/5196\n",
      "Processing molecule 4000/5196\n",
      "Processing molecule 5000/5196\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4936\n",
      "Processing molecule 2000/4936\n",
      "Processing molecule 3000/4936\n",
      "Processing molecule 4000/4936\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4844\n",
      "Processing molecule 2000/4844\n",
      "Processing molecule 3000/4844\n",
      "Processing molecule 4000/4844\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5939\n",
      "Processing molecule 2000/5939\n",
      "Processing molecule 3000/5939\n",
      "Processing molecule 4000/5939\n",
      "Processing molecule 5000/5939\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5627\n",
      "Processing molecule 2000/5627\n",
      "Processing molecule 3000/5627\n",
      "Processing molecule 4000/5627\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 5000/5627\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4409\n",
      "Processing molecule 2000/4409\n",
      "Processing molecule 3000/4409\n",
      "Processing molecule 4000/4409\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6113\n",
      "Processing molecule 2000/6113\n",
      "Processing molecule 3000/6113\n",
      "Processing molecule 4000/6113\n",
      "Processing molecule 5000/6113\n",
      "Processing molecule 6000/6113\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5500\n",
      "Processing molecule 2000/5500\n",
      "Processing molecule 3000/5500\n",
      "Processing molecule 4000/5500\n",
      "Processing molecule 5000/5500\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4413\n",
      "Processing molecule 2000/4413\n",
      "Processing molecule 3000/4413\n",
      "Processing molecule 4000/4413\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5709\n",
      "Processing molecule 2000/5709\n",
      "Processing molecule 3000/5709\n",
      "Processing molecule 4000/5709\n",
      "Processing molecule 5000/5709\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6524\n",
      "Processing molecule 2000/6524\n",
      "Processing molecule 3000/6524\n",
      "Processing molecule 4000/6524\n",
      "Processing molecule 5000/6524\n",
      "Processing molecule 6000/6524\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6065\n",
      "Processing molecule 2000/6065\n",
      "Processing molecule 3000/6065\n",
      "Processing molecule 4000/6065\n",
      "Processing molecule 5000/6065\n",
      "Processing molecule 6000/6065\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5882\n",
      "Processing molecule 2000/5882\n",
      "Processing molecule 3000/5882\n",
      "Processing molecule 4000/5882\n",
      "Processing molecule 5000/5882\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5202\n",
      "Processing molecule 2000/5202\n",
      "Processing molecule 3000/5202\n",
      "Processing molecule 4000/5202\n",
      "Processing molecule 5000/5202\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5562\n",
      "Processing molecule 2000/5562\n",
      "Processing molecule 3000/5562\n",
      "Processing molecule 4000/5562\n",
      "Processing molecule 5000/5562\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6249\n",
      "Processing molecule 2000/6249\n",
      "Processing molecule 3000/6249\n",
      "Processing molecule 4000/6249\n",
      "Processing molecule 5000/6249\n",
      "Processing molecule 6000/6249\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5792\n",
      "Processing molecule 2000/5792\n",
      "Processing molecule 3000/5792\n",
      "Processing molecule 4000/5792\n",
      "Processing molecule 5000/5792\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5254\n",
      "Processing molecule 2000/5254\n",
      "Processing molecule 3000/5254\n",
      "Processing molecule 4000/5254\n",
      "Processing molecule 5000/5254\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6355\n",
      "Processing molecule 2000/6355\n",
      "Processing molecule 3000/6355\n",
      "Processing molecule 4000/6355\n",
      "Processing molecule 5000/6355\n",
      "Processing molecule 6000/6355\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5832\n",
      "Processing molecule 2000/5832\n",
      "Processing molecule 3000/5832\n",
      "Processing molecule 4000/5832\n",
      "Processing molecule 5000/5832\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6078\n",
      "Processing molecule 2000/6078\n",
      "Processing molecule 3000/6078\n",
      "Processing molecule 4000/6078\n",
      "Processing molecule 5000/6078\n",
      "Processing molecule 6000/6078\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5257 - train negative label: 64769\n",
      "up and down sampling => train positive label: 31542 - train negative label: 32384\n",
      "Test positive label: 605 - Test negative label: 7315\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5813 - accuracy: 0.7023 - mae: 0.3944 - mse: 0.1965 - auc_21: 0.7704\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5237 - accuracy: 0.7517 - mae: 0.3480 - mse: 0.1725 - auc_21: 0.8215\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.5021 - accuracy: 0.7633 - mae: 0.3314 - mse: 0.1642 - auc_21: 0.8377\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4923 - accuracy: 0.7684 - mae: 0.3235 - mse: 0.1605 - auc_21: 0.8446\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4807 - accuracy: 0.7753 - mae: 0.3152 - mse: 0.1562 - auc_21: 0.8525\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4734 - accuracy: 0.7796 - mae: 0.3097 - mse: 0.1534 - auc_21: 0.8573\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4658 - accuracy: 0.7841 - mae: 0.3038 - mse: 0.1507 - auc_21: 0.8621\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 14ms/step - loss: 0.4577 - accuracy: 0.7906 - mae: 0.2971 - mse: 0.1474 - auc_21: 0.8675\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4539 - accuracy: 0.7908 - mae: 0.2945 - mse: 0.1461 - auc_21: 0.8698\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4504 - accuracy: 0.7944 - mae: 0.2911 - mse: 0.1446 - auc_21: 0.8721\n",
      "79\n",
      "79\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "76\n",
      "75\n",
      "70\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4425 - accuracy: 0.7975 - mae: 0.2855 - mse: 0.1419 - auc_21: 0.8766\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4424 - accuracy: 0.7975 - mae: 0.2854 - mse: 0.1419 - auc_21: 0.8768\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4335 - accuracy: 0.8037 - mae: 0.2789 - mse: 0.1384 - auc_21: 0.8820\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4298 - accuracy: 0.8059 - mae: 0.2765 - mse: 0.1373 - auc_21: 0.8838\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4266 - accuracy: 0.8064 - mae: 0.2734 - mse: 0.1362 - auc_21: 0.8857\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4242 - accuracy: 0.8079 - mae: 0.2723 - mse: 0.1354 - auc_21: 0.8871\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4196 - accuracy: 0.8105 - mae: 0.2686 - mse: 0.1337 - auc_21: 0.8897\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4183 - accuracy: 0.8104 - mae: 0.2679 - mse: 0.1334 - auc_21: 0.8902\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4152 - accuracy: 0.8136 - mae: 0.2656 - mse: 0.1320 - auc_21: 0.8919\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4141 - accuracy: 0.8127 - mae: 0.2651 - mse: 0.1319 - auc_21: 0.8923\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8157 - mae: 0.2628 - mse: 0.1305 - auc_21: 0.8942\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4079 - accuracy: 0.8179 - mae: 0.2595 - mse: 0.1295 - auc_21: 0.8957\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8154 - mae: 0.2624 - mse: 0.1307 - auc_21: 0.8940\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4068 - accuracy: 0.8194 - mae: 0.2587 - mse: 0.1289 - auc_21: 0.8962\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4075 - accuracy: 0.8182 - mae: 0.2603 - mse: 0.1296 - auc_21: 0.8957\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4055 - accuracy: 0.8196 - mae: 0.2581 - mse: 0.1288 - auc_21: 0.8970\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4051 - accuracy: 0.8185 - mae: 0.2583 - mse: 0.1287 - auc_21: 0.8968\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4042 - accuracy: 0.8186 - mae: 0.2574 - mse: 0.1285 - auc_21: 0.8971\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4026 - accuracy: 0.8207 - mae: 0.2562 - mse: 0.1277 - auc_21: 0.8984\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3989 - accuracy: 0.8232 - mae: 0.2543 - mse: 0.1265 - auc_21: 0.9001\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3991 - accuracy: 0.8237 - mae: 0.2538 - mse: 0.1262 - auc_21: 0.9002\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4035 - accuracy: 0.8203 - mae: 0.2566 - mse: 0.1281 - auc_21: 0.8976\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4041 - accuracy: 0.8218 - mae: 0.2568 - mse: 0.1278 - auc_21: 0.8975\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4072 - accuracy: 0.8180 - mae: 0.2590 - mse: 0.1294 - auc_21: 0.8954\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4063 - accuracy: 0.8194 - mae: 0.2589 - mse: 0.1291 - auc_21: 0.8960\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4044 - accuracy: 0.8185 - mae: 0.2581 - mse: 0.1286 - auc_21: 0.8970\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4008 - accuracy: 0.8227 - mae: 0.2553 - mse: 0.1272 - auc_21: 0.8989\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4027 - accuracy: 0.8214 - mae: 0.2558 - mse: 0.1277 - auc_21: 0.8979\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4005 - accuracy: 0.8229 - mae: 0.2543 - mse: 0.1269 - auc_21: 0.8990\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.3999 - accuracy: 0.8228 - mae: 0.2545 - mse: 0.1269 - auc_21: 0.8991\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4068 - accuracy: 0.8202 - mae: 0.2583 - mse: 0.1290 - auc_21: 0.8957\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4070 - accuracy: 0.8201 - mae: 0.2587 - mse: 0.1289 - auc_21: 0.8959\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4100 - accuracy: 0.8185 - mae: 0.2606 - mse: 0.1302 - auc_21: 0.8939\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4094 - accuracy: 0.8163 - mae: 0.2608 - mse: 0.1302 - auc_21: 0.8941\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4089 - accuracy: 0.8191 - mae: 0.2604 - mse: 0.1299 - auc_21: 0.8945\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4060 - accuracy: 0.8209 - mae: 0.2585 - mse: 0.1288 - auc_21: 0.8960\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4072 - accuracy: 0.8191 - mae: 0.2597 - mse: 0.1296 - auc_21: 0.8949\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4129 - accuracy: 0.8166 - mae: 0.2632 - mse: 0.1313 - auc_21: 0.8922\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4142 - accuracy: 0.8152 - mae: 0.2643 - mse: 0.1318 - auc_21: 0.8914\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8158 - mae: 0.2628 - mse: 0.1313 - auc_21: 0.8927\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4107 - accuracy: 0.8163 - mae: 0.2626 - mse: 0.1309 - auc_21: 0.8930\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4088 - accuracy: 0.8180 - mae: 0.2605 - mse: 0.1302 - auc_21: 0.8942\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4147 - accuracy: 0.8149 - mae: 0.2649 - mse: 0.1322 - auc_21: 0.8909\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4241 - accuracy: 0.8095 - mae: 0.2720 - mse: 0.1356 - auc_21: 0.8855\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4268 - accuracy: 0.8070 - mae: 0.2733 - mse: 0.1368 - auc_21: 0.8836\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4272 - accuracy: 0.8075 - mae: 0.2738 - mse: 0.1366 - auc_21: 0.8839\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4259 - accuracy: 0.8068 - mae: 0.2735 - mse: 0.1364 - auc_21: 0.8846\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4303 - accuracy: 0.8058 - mae: 0.2759 - mse: 0.1378 - auc_21: 0.8817\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4334 - accuracy: 0.8044 - mae: 0.2785 - mse: 0.1388 - auc_21: 0.8796\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4302 - accuracy: 0.8062 - mae: 0.2763 - mse: 0.1375 - auc_21: 0.8815\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4307 - accuracy: 0.8054 - mae: 0.2762 - mse: 0.1379 - auc_21: 0.8807\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4318 - accuracy: 0.8062 - mae: 0.2771 - mse: 0.1383 - auc_21: 0.8802\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4297 - accuracy: 0.8055 - mae: 0.2756 - mse: 0.1375 - auc_21: 0.8815\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4274 - accuracy: 0.8075 - mae: 0.2743 - mse: 0.1369 - auc_21: 0.8823\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4277 - accuracy: 0.8076 - mae: 0.2745 - mse: 0.1369 - auc_21: 0.8826\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4266 - accuracy: 0.8063 - mae: 0.2729 - mse: 0.1366 - auc_21: 0.8831\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4238 - accuracy: 0.8110 - mae: 0.2710 - mse: 0.1351 - auc_21: 0.8853\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4179 - accuracy: 0.8137 - mae: 0.2669 - mse: 0.1331 - auc_21: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4176 - accuracy: 0.8126 - mae: 0.2670 - mse: 0.1333 - auc_21: 0.8879\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4140 - accuracy: 0.8134 - mae: 0.2642 - mse: 0.1321 - auc_21: 0.8899\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4156 - accuracy: 0.8147 - mae: 0.2659 - mse: 0.1323 - auc_21: 0.8889\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4130 - accuracy: 0.8142 - mae: 0.2643 - mse: 0.1317 - auc_21: 0.8906\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4129 - accuracy: 0.8143 - mae: 0.2631 - mse: 0.1315 - auc_21: 0.8907\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4148 - accuracy: 0.8136 - mae: 0.2651 - mse: 0.1324 - auc_21: 0.8897\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4220 - accuracy: 0.8099 - mae: 0.2704 - mse: 0.1348 - auc_21: 0.8853\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4189 - accuracy: 0.8103 - mae: 0.2682 - mse: 0.1340 - auc_21: 0.8870\n",
      "Epoch 7/10\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4217 - accuracy: 0.8092 - mae: 0.2701 - mse: 0.1349 - auc_21: 0.8854\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4166 - accuracy: 0.8115 - mae: 0.2668 - mse: 0.1332 - auc_21: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4180 - accuracy: 0.8109 - mae: 0.2684 - mse: 0.1340 - auc_21: 0.8867\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4164 - accuracy: 0.8124 - mae: 0.2666 - mse: 0.1332 - auc_21: 0.8880\n",
      "81\n",
      "81\n",
      "80\n",
      "81\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4156 - accuracy: 0.8129 - mae: 0.2664 - mse: 0.1329 - auc_21: 0.8882\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4146 - accuracy: 0.8122 - mae: 0.2656 - mse: 0.1325 - auc_21: 0.8890\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4145 - accuracy: 0.8130 - mae: 0.2657 - mse: 0.1327 - auc_21: 0.8884\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4212 - accuracy: 0.8081 - mae: 0.2708 - mse: 0.1352 - auc_21: 0.8843\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4266 - accuracy: 0.8071 - mae: 0.2742 - mse: 0.1370 - auc_21: 0.8812\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4257 - accuracy: 0.8061 - mae: 0.2741 - mse: 0.1369 - auc_21: 0.8815\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4241 - accuracy: 0.8076 - mae: 0.2729 - mse: 0.1362 - auc_21: 0.8824\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4243 - accuracy: 0.8074 - mae: 0.2734 - mse: 0.1363 - auc_21: 0.8819\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4224 - accuracy: 0.8071 - mae: 0.2717 - mse: 0.1358 - auc_21: 0.8831\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4209 - accuracy: 0.8081 - mae: 0.2713 - mse: 0.1352 - auc_21: 0.8838\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4248 - accuracy: 0.8076 - mae: 0.2733 - mse: 0.1364 - auc_21: 0.8816\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 9s 19ms/step - loss: 0.4261 - accuracy: 0.8067 - mae: 0.2738 - mse: 0.1369 - auc_21: 0.8814\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4208 - accuracy: 0.8087 - mae: 0.2709 - mse: 0.1351 - auc_21: 0.8837\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4221 - accuracy: 0.8082 - mae: 0.2711 - mse: 0.1355 - auc_21: 0.8833\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4212 - accuracy: 0.8078 - mae: 0.2710 - mse: 0.1354 - auc_21: 0.8835\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4202 - accuracy: 0.8090 - mae: 0.2702 - mse: 0.1352 - auc_21: 0.8838\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4206 - accuracy: 0.8093 - mae: 0.2710 - mse: 0.1352 - auc_21: 0.8835\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4222 - accuracy: 0.8092 - mae: 0.2717 - mse: 0.1356 - auc_21: 0.8831\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4230 - accuracy: 0.8080 - mae: 0.2722 - mse: 0.1359 - auc_21: 0.8826\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 10s 19ms/step - loss: 0.4223 - accuracy: 0.8064 - mae: 0.2725 - mse: 0.1358 - auc_21: 0.8826\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "10\n",
      "248/248 [==============================] - 1s 2ms/step - loss: 0.3069 - accuracy: 0.9067 - mae: 0.1250 - mse: 0.0756 - auc_21: 0.7793\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6255\n",
      "Processing molecule 2000/6255\n",
      "Processing molecule 3000/6255\n",
      "Processing molecule 4000/6255\n",
      "Processing molecule 5000/6255\n",
      "Processing molecule 6000/6255\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5858\n",
      "Processing molecule 2000/5858\n",
      "Processing molecule 3000/5858\n",
      "Processing molecule 4000/5858\n",
      "Processing molecule 5000/5858\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5206\n",
      "Processing molecule 2000/5206\n",
      "Processing molecule 3000/5206\n",
      "Processing molecule 4000/5206\n",
      "Processing molecule 5000/5206\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4943\n",
      "Processing molecule 2000/4943\n",
      "Processing molecule 3000/4943\n",
      "Processing molecule 4000/4943\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4843\n",
      "Processing molecule 2000/4843\n",
      "Processing molecule 3000/4843\n",
      "Processing molecule 4000/4843\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5924\n",
      "Processing molecule 2000/5924\n",
      "Processing molecule 3000/5924\n",
      "Processing molecule 4000/5924\n",
      "Processing molecule 5000/5924\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5624\n",
      "Processing molecule 2000/5624\n",
      "Processing molecule 3000/5624\n",
      "Processing molecule 4000/5624\n",
      "Processing molecule 5000/5624\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4387\n",
      "Processing molecule 2000/4387\n",
      "Processing molecule 3000/4387\n",
      "Processing molecule 4000/4387\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6111\n",
      "Processing molecule 2000/6111\n",
      "Processing molecule 3000/6111\n",
      "Processing molecule 4000/6111\n",
      "Processing molecule 5000/6111\n",
      "Processing molecule 6000/6111\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5483\n",
      "Processing molecule 2000/5483\n",
      "Processing molecule 3000/5483\n",
      "Processing molecule 4000/5483\n",
      "Processing molecule 5000/5483\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4378\n",
      "Processing molecule 2000/4378\n",
      "Processing molecule 3000/4378\n",
      "Processing molecule 4000/4378\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5690\n",
      "Processing molecule 2000/5690\n",
      "Processing molecule 3000/5690\n",
      "Processing molecule 4000/5690\n",
      "Processing molecule 5000/5690\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6534\n",
      "Processing molecule 2000/6534\n",
      "Processing molecule 3000/6534\n",
      "Processing molecule 4000/6534\n",
      "Processing molecule 5000/6534\n",
      "Processing molecule 6000/6534\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6067\n",
      "Processing molecule 2000/6067\n",
      "Processing molecule 3000/6067\n",
      "Processing molecule 4000/6067\n",
      "Processing molecule 5000/6067\n",
      "Processing molecule 6000/6067\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5895\n",
      "Processing molecule 2000/5895\n",
      "Processing molecule 3000/5895\n",
      "Processing molecule 4000/5895\n",
      "Processing molecule 5000/5895\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5212\n",
      "Processing molecule 2000/5212\n",
      "Processing molecule 3000/5212\n",
      "Processing molecule 4000/5212\n",
      "Processing molecule 5000/5212\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5560\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 2000/5560\n",
      "Processing molecule 3000/5560\n",
      "Processing molecule 4000/5560\n",
      "Processing molecule 5000/5560\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6247\n",
      "Processing molecule 2000/6247\n",
      "Processing molecule 3000/6247\n",
      "Processing molecule 4000/6247\n",
      "Processing molecule 5000/6247\n",
      "Processing molecule 6000/6247\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5793\n",
      "Processing molecule 2000/5793\n",
      "Processing molecule 3000/5793\n",
      "Processing molecule 4000/5793\n",
      "Processing molecule 5000/5793\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5238\n",
      "Processing molecule 2000/5238\n",
      "Processing molecule 3000/5238\n",
      "Processing molecule 4000/5238\n",
      "Processing molecule 5000/5238\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6353\n",
      "Processing molecule 2000/6353\n",
      "Processing molecule 3000/6353\n",
      "Processing molecule 4000/6353\n",
      "Processing molecule 5000/6353\n",
      "Processing molecule 6000/6353\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5814\n",
      "Processing molecule 2000/5814\n",
      "Processing molecule 3000/5814\n",
      "Processing molecule 4000/5814\n",
      "Processing molecule 5000/5814\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5199\n",
      "Processing molecule 2000/5199\n",
      "Processing molecule 3000/5199\n",
      "Processing molecule 4000/5199\n",
      "Processing molecule 5000/5199\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6079\n",
      "Processing molecule 2000/6079\n",
      "Processing molecule 3000/6079\n",
      "Processing molecule 4000/6079\n",
      "Processing molecule 5000/6079\n",
      "Processing molecule 6000/6079\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5289 - train negative label: 64702\n",
      "up and down sampling => train positive label: 31734 - train negative label: 32351\n",
      "Test positive label: 573 - Test negative label: 7382\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5698 - accuracy: 0.7180 - mae: 0.3847 - mse: 0.1916 - auc_22: 0.7824\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5233 - accuracy: 0.7540 - mae: 0.3474 - mse: 0.1721 - auc_22: 0.8225\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.5031 - accuracy: 0.7636 - mae: 0.3319 - mse: 0.1644 - auc_22: 0.8369\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4899 - accuracy: 0.7713 - mae: 0.3218 - mse: 0.1595 - auc_22: 0.8464\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4821 - accuracy: 0.7748 - mae: 0.3158 - mse: 0.1564 - auc_22: 0.8518\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4742 - accuracy: 0.7792 - mae: 0.3096 - mse: 0.1536 - auc_22: 0.8568\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4661 - accuracy: 0.7833 - mae: 0.3043 - mse: 0.1510 - auc_22: 0.8617\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4608 - accuracy: 0.7877 - mae: 0.2997 - mse: 0.1488 - auc_22: 0.8654\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4552 - accuracy: 0.7920 - mae: 0.2954 - mse: 0.1467 - auc_22: 0.8689\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4490 - accuracy: 0.7958 - mae: 0.2906 - mse: 0.1444 - auc_22: 0.8727\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4430 - accuracy: 0.7983 - mae: 0.2867 - mse: 0.1424 - auc_22: 0.8761\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4395 - accuracy: 0.7997 - mae: 0.2841 - mse: 0.1411 - auc_22: 0.8785\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4351 - accuracy: 0.8039 - mae: 0.2804 - mse: 0.1392 - auc_22: 0.8812\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4307 - accuracy: 0.8044 - mae: 0.2771 - mse: 0.1379 - auc_22: 0.8834\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4282 - accuracy: 0.8051 - mae: 0.2758 - mse: 0.1370 - auc_22: 0.8850\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4242 - accuracy: 0.8086 - mae: 0.2732 - mse: 0.1353 - auc_22: 0.8873\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4228 - accuracy: 0.8105 - mae: 0.2713 - mse: 0.1348 - auc_22: 0.8879\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4195 - accuracy: 0.8124 - mae: 0.2686 - mse: 0.1335 - auc_22: 0.8899\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4151 - accuracy: 0.8132 - mae: 0.2659 - mse: 0.1323 - auc_22: 0.8921\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4130 - accuracy: 0.8159 - mae: 0.2643 - mse: 0.1313 - auc_22: 0.8933\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4099 - accuracy: 0.8165 - mae: 0.2618 - mse: 0.1304 - auc_22: 0.8949\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4096 - accuracy: 0.8182 - mae: 0.2611 - mse: 0.1301 - auc_22: 0.8951\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4065 - accuracy: 0.8206 - mae: 0.2593 - mse: 0.1288 - auc_22: 0.8968\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4076 - accuracy: 0.8189 - mae: 0.2602 - mse: 0.1295 - auc_22: 0.8960\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4077 - accuracy: 0.8186 - mae: 0.2599 - mse: 0.1295 - auc_22: 0.8956\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4055 - accuracy: 0.8194 - mae: 0.2588 - mse: 0.1288 - auc_22: 0.8967\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4062 - accuracy: 0.8203 - mae: 0.2591 - mse: 0.1289 - auc_22: 0.8963\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4088 - accuracy: 0.8182 - mae: 0.2604 - mse: 0.1297 - auc_22: 0.8952\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4051 - accuracy: 0.8205 - mae: 0.2579 - mse: 0.1284 - auc_22: 0.8971\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4016 - accuracy: 0.8229 - mae: 0.2552 - mse: 0.1272 - auc_22: 0.8985\n",
      "82\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4065 - accuracy: 0.8201 - mae: 0.2584 - mse: 0.1290 - auc_22: 0.8960\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4119 - accuracy: 0.8163 - mae: 0.2631 - mse: 0.1309 - auc_22: 0.8932\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4120 - accuracy: 0.8169 - mae: 0.2630 - mse: 0.1309 - auc_22: 0.8930\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4154 - accuracy: 0.8141 - mae: 0.2649 - mse: 0.1322 - auc_22: 0.8908\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4108 - accuracy: 0.8140 - mae: 0.2627 - mse: 0.1308 - auc_22: 0.8934\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4094 - accuracy: 0.8186 - mae: 0.2613 - mse: 0.1301 - auc_22: 0.8940\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4134 - accuracy: 0.8157 - mae: 0.2640 - mse: 0.1317 - auc_22: 0.8919\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4147 - accuracy: 0.8154 - mae: 0.2634 - mse: 0.1317 - auc_22: 0.8912\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4252 - accuracy: 0.8100 - mae: 0.2715 - mse: 0.1354 - auc_22: 0.8853\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4220 - accuracy: 0.8135 - mae: 0.2690 - mse: 0.1343 - auc_22: 0.8869\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4222 - accuracy: 0.8115 - mae: 0.2699 - mse: 0.1346 - auc_22: 0.8866\n",
      "Epoch 2/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4177 - accuracy: 0.8143 - mae: 0.2665 - mse: 0.1331 - auc_22: 0.8892\n",
      "Epoch 3/10\n",
      "501/501 [==============================] - 7s 15ms/step - loss: 0.4189 - accuracy: 0.8131 - mae: 0.2674 - mse: 0.1334 - auc_22: 0.8885\n",
      "Epoch 4/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4178 - accuracy: 0.8158 - mae: 0.2658 - mse: 0.1326 - auc_22: 0.8890\n",
      "Epoch 5/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4173 - accuracy: 0.8159 - mae: 0.2659 - mse: 0.1326 - auc_22: 0.8888\n",
      "Epoch 6/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4163 - accuracy: 0.8143 - mae: 0.2659 - mse: 0.1325 - auc_22: 0.8898\n",
      "Epoch 7/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4174 - accuracy: 0.8131 - mae: 0.2667 - mse: 0.1330 - auc_22: 0.8890\n",
      "Epoch 8/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4192 - accuracy: 0.8118 - mae: 0.2682 - mse: 0.1337 - auc_22: 0.8877\n",
      "Epoch 9/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4194 - accuracy: 0.8121 - mae: 0.2682 - mse: 0.1338 - auc_22: 0.8876\n",
      "Epoch 10/10\n",
      "501/501 [==============================] - 7s 14ms/step - loss: 0.4186 - accuracy: 0.8149 - mae: 0.2674 - mse: 0.1331 - auc_22: 0.8879\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "5\n",
      "249/249 [==============================] - 0s 2ms/step - loss: 0.2813 - accuracy: 0.8722 - mae: 0.1475 - mse: 0.0852 - auc_22: 0.7883\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6288\n",
      "Processing molecule 2000/6288\n",
      "Processing molecule 3000/6288\n",
      "Processing molecule 4000/6288\n",
      "Processing molecule 5000/6288\n",
      "Processing molecule 6000/6288\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5902\n",
      "Processing molecule 2000/5902\n",
      "Processing molecule 3000/5902\n",
      "Processing molecule 4000/5902\n",
      "Processing molecule 5000/5902\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5210\n",
      "Processing molecule 2000/5210\n",
      "Processing molecule 3000/5210\n",
      "Processing molecule 4000/5210\n",
      "Processing molecule 5000/5210\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5006\n",
      "Processing molecule 2000/5006\n",
      "Processing molecule 3000/5006\n",
      "Processing molecule 4000/5006\n",
      "Processing molecule 5000/5006\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4887\n",
      "Processing molecule 2000/4887\n",
      "Processing molecule 3000/4887\n",
      "Processing molecule 4000/4887\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5962\n",
      "Processing molecule 2000/5962\n",
      "Processing molecule 3000/5962\n",
      "Processing molecule 4000/5962\n",
      "Processing molecule 5000/5962\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5663\n",
      "Processing molecule 2000/5663\n",
      "Processing molecule 3000/5663\n",
      "Processing molecule 4000/5663\n",
      "Processing molecule 5000/5663\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4408\n",
      "Processing molecule 2000/4408\n",
      "Processing molecule 3000/4408\n",
      "Processing molecule 4000/4408\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6146\n",
      "Processing molecule 2000/6146\n",
      "Processing molecule 3000/6146\n",
      "Processing molecule 4000/6146\n",
      "Processing molecule 5000/6146\n",
      "Processing molecule 6000/6146\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5488\n",
      "Processing molecule 2000/5488\n",
      "Processing molecule 3000/5488\n",
      "Processing molecule 4000/5488\n",
      "Processing molecule 5000/5488\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4417\n",
      "Processing molecule 2000/4417\n",
      "Processing molecule 3000/4417\n",
      "Processing molecule 4000/4417\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5736\n",
      "Processing molecule 2000/5736\n",
      "Processing molecule 3000/5736\n",
      "Processing molecule 4000/5736\n",
      "Processing molecule 5000/5736\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6563\n",
      "Processing molecule 2000/6563\n",
      "Processing molecule 3000/6563\n",
      "Processing molecule 4000/6563\n",
      "Processing molecule 5000/6563\n",
      "Processing molecule 6000/6563\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6109\n",
      "Processing molecule 2000/6109\n",
      "Processing molecule 3000/6109\n",
      "Processing molecule 4000/6109\n",
      "Processing molecule 5000/6109\n",
      "Processing molecule 6000/6109\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5916\n",
      "Processing molecule 2000/5916\n",
      "Processing molecule 3000/5916\n",
      "Processing molecule 4000/5916\n",
      "Processing molecule 5000/5916\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5279\n",
      "Processing molecule 2000/5279\n",
      "Processing molecule 3000/5279\n",
      "Processing molecule 4000/5279\n",
      "Processing molecule 5000/5279\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5607\n",
      "Processing molecule 2000/5607\n",
      "Processing molecule 3000/5607\n",
      "Processing molecule 4000/5607\n",
      "Processing molecule 5000/5607\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6286\n",
      "Processing molecule 2000/6286\n",
      "Processing molecule 3000/6286\n",
      "Processing molecule 4000/6286\n",
      "Processing molecule 5000/6286\n",
      "Processing molecule 6000/6286\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5825\n",
      "Processing molecule 2000/5825\n",
      "Processing molecule 3000/5825\n",
      "Processing molecule 4000/5825\n",
      "Processing molecule 5000/5825\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5261\n",
      "Processing molecule 2000/5261\n",
      "Processing molecule 3000/5261\n",
      "Processing molecule 4000/5261\n",
      "Processing molecule 5000/5261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6391\n",
      "Processing molecule 2000/6391\n",
      "Processing molecule 3000/6391\n",
      "Processing molecule 4000/6391\n",
      "Processing molecule 5000/6391\n",
      "Processing molecule 6000/6391\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5832\n",
      "Processing molecule 2000/5832\n",
      "Processing molecule 3000/5832\n",
      "Processing molecule 4000/5832\n",
      "Processing molecule 5000/5832\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5239\n",
      "Processing molecule 2000/5239\n",
      "Processing molecule 3000/5239\n",
      "Processing molecule 4000/5239\n",
      "Processing molecule 5000/5239\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6117\n",
      "Processing molecule 2000/6117\n",
      "Processing molecule 3000/6117\n",
      "Processing molecule 4000/6117\n",
      "Processing molecule 5000/6117\n",
      "Processing molecule 6000/6117\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5312 - train negative label: 65113\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "up and down sampling => train positive label: 31872 - train negative label: 32556\n",
      "Test positive label: 550 - Test negative label: 6971\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.5669 - accuracy: 0.7172 - mae: 0.3826 - mse: 0.1904 - auc_23: 0.7853\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.5151 - accuracy: 0.7576 - mae: 0.3413 - mse: 0.1690 - auc_23: 0.8290\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.5004 - accuracy: 0.7654 - mae: 0.3304 - mse: 0.1634 - auc_23: 0.8392\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4889 - accuracy: 0.7719 - mae: 0.3213 - mse: 0.1590 - auc_23: 0.8472\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4783 - accuracy: 0.7796 - mae: 0.3128 - mse: 0.1550 - auc_23: 0.8541\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4727 - accuracy: 0.7819 - mae: 0.3094 - mse: 0.1531 - auc_23: 0.8578\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4646 - accuracy: 0.7854 - mae: 0.3023 - mse: 0.1500 - auc_23: 0.8632\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4567 - accuracy: 0.7912 - mae: 0.2966 - mse: 0.1470 - auc_23: 0.8681\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4514 - accuracy: 0.7923 - mae: 0.2925 - mse: 0.1451 - auc_23: 0.8716\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4447 - accuracy: 0.7960 - mae: 0.2876 - mse: 0.1429 - auc_23: 0.8754\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4397 - accuracy: 0.7968 - mae: 0.2841 - mse: 0.1412 - auc_23: 0.8784\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4371 - accuracy: 0.8004 - mae: 0.2826 - mse: 0.1402 - auc_23: 0.8798\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4325 - accuracy: 0.8022 - mae: 0.2787 - mse: 0.1384 - auc_23: 0.8827\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4262 - accuracy: 0.8044 - mae: 0.2741 - mse: 0.1362 - auc_23: 0.8863\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4245 - accuracy: 0.8071 - mae: 0.2729 - mse: 0.1356 - auc_23: 0.8872\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4219 - accuracy: 0.8077 - mae: 0.2711 - mse: 0.1348 - auc_23: 0.8884\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4166 - accuracy: 0.8110 - mae: 0.2668 - mse: 0.1327 - auc_23: 0.8914\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4146 - accuracy: 0.8122 - mae: 0.2651 - mse: 0.1318 - auc_23: 0.8925\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4122 - accuracy: 0.8120 - mae: 0.2639 - mse: 0.1314 - auc_23: 0.8935\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4095 - accuracy: 0.8157 - mae: 0.2617 - mse: 0.1303 - auc_23: 0.8950\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4066 - accuracy: 0.8156 - mae: 0.2600 - mse: 0.1294 - auc_23: 0.8964\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4056 - accuracy: 0.8156 - mae: 0.2596 - mse: 0.1291 - auc_23: 0.8970\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4015 - accuracy: 0.8183 - mae: 0.2561 - mse: 0.1276 - auc_23: 0.8991\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3996 - accuracy: 0.8196 - mae: 0.2548 - mse: 0.1268 - auc_23: 0.9000\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4025 - accuracy: 0.8175 - mae: 0.2568 - mse: 0.1281 - auc_23: 0.8984\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3981 - accuracy: 0.8208 - mae: 0.2537 - mse: 0.1262 - auc_23: 0.9010\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3991 - accuracy: 0.8209 - mae: 0.2543 - mse: 0.1268 - auc_23: 0.9001\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3947 - accuracy: 0.8233 - mae: 0.2513 - mse: 0.1251 - auc_23: 0.9024\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3981 - accuracy: 0.8220 - mae: 0.2534 - mse: 0.1266 - auc_23: 0.9003\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4021 - accuracy: 0.8198 - mae: 0.2570 - mse: 0.1280 - auc_23: 0.8980\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4023 - accuracy: 0.8200 - mae: 0.2563 - mse: 0.1277 - auc_23: 0.8980\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4052 - accuracy: 0.8193 - mae: 0.2583 - mse: 0.1286 - auc_23: 0.8964\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4025 - accuracy: 0.8211 - mae: 0.2562 - mse: 0.1276 - auc_23: 0.8979\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.4021 - accuracy: 0.8216 - mae: 0.2556 - mse: 0.1274 - auc_23: 0.8980\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4009 - accuracy: 0.8211 - mae: 0.2550 - mse: 0.1272 - auc_23: 0.8986\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4010 - accuracy: 0.8206 - mae: 0.2551 - mse: 0.1274 - auc_23: 0.8982\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4010 - accuracy: 0.8224 - mae: 0.2549 - mse: 0.1271 - auc_23: 0.8985\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3995 - accuracy: 0.8219 - mae: 0.2542 - mse: 0.1266 - auc_23: 0.8991\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.4012 - accuracy: 0.8206 - mae: 0.2546 - mse: 0.1270 - auc_23: 0.8983\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3947 - accuracy: 0.8246 - mae: 0.2509 - mse: 0.1249 - auc_23: 0.9013\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "82\n",
      "Epoch 1/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3942 - accuracy: 0.8253 - mae: 0.2499 - mse: 0.1247 - auc_23: 0.9017\n",
      "Epoch 2/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3970 - accuracy: 0.8245 - mae: 0.2519 - mse: 0.1255 - auc_23: 0.9003\n",
      "Epoch 3/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3940 - accuracy: 0.8246 - mae: 0.2500 - mse: 0.1249 - auc_23: 0.9015\n",
      "Epoch 4/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3951 - accuracy: 0.8246 - mae: 0.2507 - mse: 0.1252 - auc_23: 0.9009\n",
      "Epoch 5/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3948 - accuracy: 0.8240 - mae: 0.2506 - mse: 0.1250 - auc_23: 0.9011\n",
      "Epoch 6/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3942 - accuracy: 0.8254 - mae: 0.2502 - mse: 0.1248 - auc_23: 0.9015\n",
      "Epoch 7/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3923 - accuracy: 0.8249 - mae: 0.2488 - mse: 0.1242 - auc_23: 0.9023\n",
      "Epoch 8/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3902 - accuracy: 0.8271 - mae: 0.2476 - mse: 0.1235 - auc_23: 0.9031\n",
      "Epoch 9/10\n",
      "504/504 [==============================] - 8s 15ms/step - loss: 0.3891 - accuracy: 0.8290 - mae: 0.2464 - mse: 0.1230 - auc_23: 0.9037\n",
      "Epoch 10/10\n",
      "504/504 [==============================] - 7s 15ms/step - loss: 0.3941 - accuracy: 0.8245 - mae: 0.2507 - mse: 0.1251 - auc_23: 0.9004\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "5\n",
      "236/236 [==============================] - 0s 2ms/step - loss: 0.3027 - accuracy: 0.8474 - mae: 0.1661 - mse: 0.0950 - auc_23: 0.7737\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 1000/6276\n",
      "Processing molecule 2000/6276\n",
      "Processing molecule 3000/6276\n",
      "Processing molecule 4000/6276\n",
      "Processing molecule 5000/6276\n",
      "Processing molecule 6000/6276\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5888\n",
      "Processing molecule 2000/5888\n",
      "Processing molecule 3000/5888\n",
      "Processing molecule 4000/5888\n",
      "Processing molecule 5000/5888\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5204\n",
      "Processing molecule 2000/5204\n",
      "Processing molecule 3000/5204\n",
      "Processing molecule 4000/5204\n",
      "Processing molecule 5000/5204\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4986\n",
      "Processing molecule 2000/4986\n",
      "Processing molecule 3000/4986\n",
      "Processing molecule 4000/4986\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4893\n",
      "Processing molecule 2000/4893\n",
      "Processing molecule 3000/4893\n",
      "Processing molecule 4000/4893\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5972\n",
      "Processing molecule 2000/5972\n",
      "Processing molecule 3000/5972\n",
      "Processing molecule 4000/5972\n",
      "Processing molecule 5000/5972\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5650\n",
      "Processing molecule 2000/5650\n",
      "Processing molecule 3000/5650\n",
      "Processing molecule 4000/5650\n",
      "Processing molecule 5000/5650\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4408\n",
      "Processing molecule 2000/4408\n",
      "Processing molecule 3000/4408\n",
      "Processing molecule 4000/4408\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6150\n",
      "Processing molecule 2000/6150\n",
      "Processing molecule 3000/6150\n",
      "Processing molecule 4000/6150\n",
      "Processing molecule 5000/6150\n",
      "Processing molecule 6000/6150\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5481\n",
      "Processing molecule 2000/5481\n",
      "Processing molecule 3000/5481\n",
      "Processing molecule 4000/5481\n",
      "Processing molecule 5000/5481\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4405\n",
      "Processing molecule 2000/4405\n",
      "Processing molecule 3000/4405\n",
      "Processing molecule 4000/4405\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5731\n",
      "Processing molecule 2000/5731\n",
      "Processing molecule 3000/5731\n",
      "Processing molecule 4000/5731\n",
      "Processing molecule 5000/5731\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6547\n",
      "Processing molecule 2000/6547\n",
      "Processing molecule 3000/6547\n",
      "Processing molecule 4000/6547\n",
      "Processing molecule 5000/6547\n",
      "Processing molecule 6000/6547\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6100\n",
      "Processing molecule 2000/6100\n",
      "Processing molecule 3000/6100\n",
      "Processing molecule 4000/6100\n",
      "Processing molecule 5000/6100\n",
      "Processing molecule 6000/6100\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5896\n",
      "Processing molecule 2000/5896\n",
      "Processing molecule 3000/5896\n",
      "Processing molecule 4000/5896\n",
      "Processing molecule 5000/5896\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5257\n",
      "Processing molecule 2000/5257\n",
      "Processing molecule 3000/5257\n",
      "Processing molecule 4000/5257\n",
      "Processing molecule 5000/5257\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5585\n",
      "Processing molecule 2000/5585\n",
      "Processing molecule 3000/5585\n",
      "Processing molecule 4000/5585\n",
      "Processing molecule 5000/5585\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6275\n",
      "Processing molecule 2000/6275\n",
      "Processing molecule 3000/6275\n",
      "Processing molecule 4000/6275\n",
      "Processing molecule 5000/6275\n",
      "Processing molecule 6000/6275\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5817\n",
      "Processing molecule 2000/5817\n",
      "Processing molecule 3000/5817\n",
      "Processing molecule 4000/5817\n",
      "Processing molecule 5000/5817\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5246\n",
      "Processing molecule 2000/5246\n",
      "Processing molecule 3000/5246\n",
      "Processing molecule 4000/5246\n",
      "Processing molecule 5000/5246\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6387\n",
      "Processing molecule 2000/6387\n",
      "Processing molecule 3000/6387\n",
      "Processing molecule 4000/6387\n",
      "Processing molecule 5000/6387\n",
      "Processing molecule 6000/6387\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5825\n",
      "Processing molecule 2000/5825\n",
      "Processing molecule 3000/5825\n",
      "Processing molecule 4000/5825\n",
      "Processing molecule 5000/5825\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6104\n",
      "Processing molecule 2000/6104\n",
      "Processing molecule 3000/6104\n",
      "Processing molecule 4000/6104\n",
      "Processing molecule 5000/6104\n",
      "Processing molecule 6000/6104\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5226 - train negative label: 65044\n",
      "up and down sampling => train positive label: 31356 - train negative label: 32522\n",
      "Test positive label: 636 - Test negative label: 7040\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.5690 - accuracy: 0.7163 - mae: 0.3850 - mse: 0.1912 - auc_24: 0.7837\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.5161 - accuracy: 0.7556 - mae: 0.3420 - mse: 0.1692 - auc_24: 0.8281\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4980 - accuracy: 0.7663 - mae: 0.3279 - mse: 0.1624 - auc_24: 0.8408\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4855 - accuracy: 0.7726 - mae: 0.3191 - mse: 0.1579 - auc_24: 0.8492\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4740 - accuracy: 0.7794 - mae: 0.3100 - mse: 0.1537 - auc_24: 0.8569\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4659 - accuracy: 0.7857 - mae: 0.3034 - mse: 0.1503 - auc_24: 0.8625\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4606 - accuracy: 0.7884 - mae: 0.2992 - mse: 0.1485 - auc_24: 0.8657\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4546 - accuracy: 0.7938 - mae: 0.2944 - mse: 0.1461 - auc_24: 0.8697\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4489 - accuracy: 0.7957 - mae: 0.2904 - mse: 0.1442 - auc_24: 0.8729\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4416 - accuracy: 0.7994 - mae: 0.2853 - mse: 0.1416 - auc_24: 0.8772\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4367 - accuracy: 0.8026 - mae: 0.2812 - mse: 0.1398 - auc_24: 0.8801\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4317 - accuracy: 0.8056 - mae: 0.2779 - mse: 0.1379 - auc_24: 0.8831\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4268 - accuracy: 0.8088 - mae: 0.2746 - mse: 0.1361 - auc_24: 0.8858\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4253 - accuracy: 0.8096 - mae: 0.2729 - mse: 0.1358 - auc_24: 0.8865\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4198 - accuracy: 0.8137 - mae: 0.2687 - mse: 0.1335 - auc_24: 0.8896\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4174 - accuracy: 0.8140 - mae: 0.2674 - mse: 0.1328 - auc_24: 0.8909\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4188 - accuracy: 0.8145 - mae: 0.2678 - mse: 0.1331 - auc_24: 0.8902\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4163 - accuracy: 0.8151 - mae: 0.2664 - mse: 0.1323 - auc_24: 0.8917\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4157 - accuracy: 0.8148 - mae: 0.2659 - mse: 0.1322 - auc_24: 0.8918\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4121 - accuracy: 0.8161 - mae: 0.2636 - mse: 0.1309 - auc_24: 0.8938\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4112 - accuracy: 0.8162 - mae: 0.2627 - mse: 0.1307 - auc_24: 0.8943\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4094 - accuracy: 0.8186 - mae: 0.2613 - mse: 0.1299 - auc_24: 0.8952\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4109 - accuracy: 0.8163 - mae: 0.2624 - mse: 0.1305 - auc_24: 0.8944\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4063 - accuracy: 0.8184 - mae: 0.2594 - mse: 0.1291 - auc_24: 0.8966\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4162 - accuracy: 0.8152 - mae: 0.2665 - mse: 0.1326 - auc_24: 0.8910\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4139 - accuracy: 0.8156 - mae: 0.2644 - mse: 0.1318 - auc_24: 0.8923\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4155 - accuracy: 0.8133 - mae: 0.2658 - mse: 0.1325 - auc_24: 0.8913\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 15ms/step - loss: 0.4136 - accuracy: 0.8144 - mae: 0.2650 - mse: 0.1318 - auc_24: 0.8925\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4093 - accuracy: 0.8175 - mae: 0.2618 - mse: 0.1302 - auc_24: 0.8948\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 7s 15ms/step - loss: 0.4107 - accuracy: 0.8180 - mae: 0.2628 - mse: 0.1308 - auc_24: 0.8937\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "240/240 [==============================] - 0s 2ms/step - loss: 0.3089 - accuracy: 0.8498 - mae: 0.1793 - mse: 0.0950 - auc_24: 0.7875\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6260\n",
      "Processing molecule 2000/6260\n",
      "Processing molecule 3000/6260\n",
      "Processing molecule 4000/6260\n",
      "Processing molecule 5000/6260\n",
      "Processing molecule 6000/6260\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5850\n",
      "Processing molecule 2000/5850\n",
      "Processing molecule 3000/5850\n",
      "Processing molecule 4000/5850\n",
      "Processing molecule 5000/5850\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5179\n",
      "Processing molecule 2000/5179\n",
      "Processing molecule 3000/5179\n",
      "Processing molecule 4000/5179\n",
      "Processing molecule 5000/5179\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4959\n",
      "Processing molecule 2000/4959\n",
      "Processing molecule 3000/4959\n",
      "Processing molecule 4000/4959\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4851\n",
      "Processing molecule 2000/4851\n",
      "Processing molecule 3000/4851\n",
      "Processing molecule 4000/4851\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5936\n",
      "Processing molecule 2000/5936\n",
      "Processing molecule 3000/5936\n",
      "Processing molecule 4000/5936\n",
      "Processing molecule 5000/5936\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5622\n",
      "Processing molecule 2000/5622\n",
      "Processing molecule 3000/5622\n",
      "Processing molecule 4000/5622\n",
      "Processing molecule 5000/5622\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4378\n",
      "Processing molecule 2000/4378\n",
      "Processing molecule 3000/4378\n",
      "Processing molecule 4000/4378\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6123\n",
      "Processing molecule 2000/6123\n",
      "Processing molecule 3000/6123\n",
      "Processing molecule 4000/6123\n",
      "Processing molecule 5000/6123\n",
      "Processing molecule 6000/6123\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5477\n",
      "Processing molecule 2000/5477\n",
      "Processing molecule 3000/5477\n",
      "Processing molecule 4000/5477\n",
      "Processing molecule 5000/5477\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4389\n",
      "Processing molecule 2000/4389\n",
      "Processing molecule 3000/4389\n",
      "Processing molecule 4000/4389\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5706\n",
      "Processing molecule 2000/5706\n",
      "Processing molecule 3000/5706\n",
      "Processing molecule 4000/5706\n",
      "Processing molecule 5000/5706\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6540\n",
      "Processing molecule 2000/6540\n",
      "Processing molecule 3000/6540\n",
      "Processing molecule 4000/6540\n",
      "Processing molecule 5000/6540\n",
      "Processing molecule 6000/6540\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6069\n",
      "Processing molecule 2000/6069\n",
      "Processing molecule 3000/6069\n",
      "Processing molecule 4000/6069\n",
      "Processing molecule 5000/6069\n",
      "Processing molecule 6000/6069\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5874\n",
      "Processing molecule 2000/5874\n",
      "Processing molecule 3000/5874\n",
      "Processing molecule 4000/5874\n",
      "Processing molecule 5000/5874\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5231\n",
      "Processing molecule 2000/5231\n",
      "Processing molecule 3000/5231\n",
      "Processing molecule 4000/5231\n",
      "Processing molecule 5000/5231\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5564\n",
      "Processing molecule 2000/5564\n",
      "Processing molecule 3000/5564\n",
      "Processing molecule 4000/5564\n",
      "Processing molecule 5000/5564\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6248\n",
      "Processing molecule 2000/6248\n",
      "Processing molecule 3000/6248\n",
      "Processing molecule 4000/6248\n",
      "Processing molecule 5000/6248\n",
      "Processing molecule 6000/6248\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5790\n",
      "Processing molecule 2000/5790\n",
      "Processing molecule 3000/5790\n",
      "Processing molecule 4000/5790\n",
      "Processing molecule 5000/5790\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5237\n",
      "Processing molecule 2000/5237\n",
      "Processing molecule 3000/5237\n",
      "Processing molecule 4000/5237\n",
      "Processing molecule 5000/5237\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6356\n",
      "Processing molecule 2000/6356\n",
      "Processing molecule 3000/6356\n",
      "Processing molecule 4000/6356\n",
      "Processing molecule 5000/6356\n",
      "Processing molecule 6000/6356\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5813\n",
      "Processing molecule 2000/5813\n",
      "Processing molecule 3000/5813\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing molecule 4000/5813\n",
      "Processing molecule 5000/5813\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5224\n",
      "Processing molecule 2000/5224\n",
      "Processing molecule 3000/5224\n",
      "Processing molecule 4000/5224\n",
      "Processing molecule 5000/5224\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6093\n",
      "Processing molecule 2000/6093\n",
      "Processing molecule 3000/6093\n",
      "Processing molecule 4000/6093\n",
      "Processing molecule 5000/6093\n",
      "Processing molecule 6000/6093\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5309 - train negative label: 64730\n",
      "up and down sampling => train positive label: 31854 - train negative label: 32365\n",
      "Test positive label: 553 - Test negative label: 7354\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5775 - accuracy: 0.7105 - mae: 0.3899 - mse: 0.1949 - auc_25: 0.7744\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5216 - accuracy: 0.7562 - mae: 0.3453 - mse: 0.1714 - auc_25: 0.8237\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.5033 - accuracy: 0.7664 - mae: 0.3311 - mse: 0.1642 - auc_25: 0.8370\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4897 - accuracy: 0.7715 - mae: 0.3208 - mse: 0.1593 - auc_25: 0.8464\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4785 - accuracy: 0.7772 - mae: 0.3134 - mse: 0.1554 - auc_25: 0.8537\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4705 - accuracy: 0.7831 - mae: 0.3068 - mse: 0.1521 - auc_25: 0.8593\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4624 - accuracy: 0.7874 - mae: 0.3002 - mse: 0.1490 - auc_25: 0.8649\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4567 - accuracy: 0.7906 - mae: 0.2965 - mse: 0.1471 - auc_25: 0.8680\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4513 - accuracy: 0.7926 - mae: 0.2922 - mse: 0.1451 - auc_25: 0.8716\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4447 - accuracy: 0.7962 - mae: 0.2878 - mse: 0.1428 - auc_25: 0.8753\n",
      "79\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4375 - accuracy: 0.8010 - mae: 0.2818 - mse: 0.1401 - auc_25: 0.8797\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4343 - accuracy: 0.8027 - mae: 0.2799 - mse: 0.1390 - auc_25: 0.8815\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4295 - accuracy: 0.8061 - mae: 0.2760 - mse: 0.1372 - auc_25: 0.8842\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4248 - accuracy: 0.8075 - mae: 0.2727 - mse: 0.1354 - auc_25: 0.8871\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4211 - accuracy: 0.8092 - mae: 0.2699 - mse: 0.1342 - auc_25: 0.8891\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4154 - accuracy: 0.8129 - mae: 0.2658 - mse: 0.1324 - auc_25: 0.8920\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4149 - accuracy: 0.8123 - mae: 0.2657 - mse: 0.1322 - auc_25: 0.8922\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4132 - accuracy: 0.8135 - mae: 0.2642 - mse: 0.1317 - auc_25: 0.8930\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4093 - accuracy: 0.8153 - mae: 0.2621 - mse: 0.1301 - auc_25: 0.8953\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4091 - accuracy: 0.8149 - mae: 0.2615 - mse: 0.1303 - auc_25: 0.8952\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4066 - accuracy: 0.8168 - mae: 0.2598 - mse: 0.1294 - auc_25: 0.8965\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4045 - accuracy: 0.8179 - mae: 0.2577 - mse: 0.1283 - auc_25: 0.8977\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4019 - accuracy: 0.8193 - mae: 0.2560 - mse: 0.1276 - auc_25: 0.8989\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3994 - accuracy: 0.8210 - mae: 0.2548 - mse: 0.1268 - auc_25: 0.9002\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3972 - accuracy: 0.8215 - mae: 0.2531 - mse: 0.1262 - auc_25: 0.9011\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3967 - accuracy: 0.8230 - mae: 0.2519 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3969 - accuracy: 0.8221 - mae: 0.2531 - mse: 0.1262 - auc_25: 0.9010\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3959 - accuracy: 0.8219 - mae: 0.2519 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3950 - accuracy: 0.8219 - mae: 0.2516 - mse: 0.1256 - auc_25: 0.9019\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3940 - accuracy: 0.8253 - mae: 0.2506 - mse: 0.1250 - auc_25: 0.9025\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3947 - accuracy: 0.8241 - mae: 0.2506 - mse: 0.1252 - auc_25: 0.9024\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3915 - accuracy: 0.8243 - mae: 0.2498 - mse: 0.1244 - auc_25: 0.9036\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3962 - accuracy: 0.8236 - mae: 0.2518 - mse: 0.1257 - auc_25: 0.9016\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3972 - accuracy: 0.8237 - mae: 0.2522 - mse: 0.1259 - auc_25: 0.9008\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3979 - accuracy: 0.8230 - mae: 0.2529 - mse: 0.1263 - auc_25: 0.9004\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.3981 - accuracy: 0.8218 - mae: 0.2540 - mse: 0.1264 - auc_25: 0.9006\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4002 - accuracy: 0.8218 - mae: 0.2552 - mse: 0.1273 - auc_25: 0.8990\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4019 - accuracy: 0.8205 - mae: 0.2560 - mse: 0.1276 - auc_25: 0.8982\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4010 - accuracy: 0.8219 - mae: 0.2548 - mse: 0.1273 - auc_25: 0.8986\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4001 - accuracy: 0.8198 - mae: 0.2547 - mse: 0.1271 - auc_25: 0.8991\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4036 - accuracy: 0.8200 - mae: 0.2570 - mse: 0.1284 - auc_25: 0.8971\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4007 - accuracy: 0.8204 - mae: 0.2552 - mse: 0.1273 - auc_25: 0.8986\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4029 - accuracy: 0.8201 - mae: 0.2565 - mse: 0.1282 - auc_25: 0.8974\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4151 - accuracy: 0.8142 - mae: 0.2655 - mse: 0.1325 - auc_25: 0.8905\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4158 - accuracy: 0.8130 - mae: 0.2663 - mse: 0.1329 - auc_25: 0.8898\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4141 - accuracy: 0.8128 - mae: 0.2655 - mse: 0.1322 - auc_25: 0.8910\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4152 - accuracy: 0.8137 - mae: 0.2653 - mse: 0.1326 - auc_25: 0.8901\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4168 - accuracy: 0.8116 - mae: 0.2671 - mse: 0.1335 - auc_25: 0.8884\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4194 - accuracy: 0.8114 - mae: 0.2683 - mse: 0.1341 - auc_25: 0.8873\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4157 - accuracy: 0.8144 - mae: 0.2660 - mse: 0.1326 - auc_25: 0.8891\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "82\n",
      "82\n",
      "82\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4152 - accuracy: 0.8135 - mae: 0.2654 - mse: 0.1327 - auc_25: 0.8891\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4174 - accuracy: 0.8126 - mae: 0.2668 - mse: 0.1333 - auc_25: 0.8879\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4165 - accuracy: 0.8125 - mae: 0.2670 - mse: 0.1331 - auc_25: 0.8885\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4141 - accuracy: 0.8134 - mae: 0.2652 - mse: 0.1324 - auc_25: 0.8898\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4127 - accuracy: 0.8161 - mae: 0.2635 - mse: 0.1317 - auc_25: 0.8904\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4165 - accuracy: 0.8135 - mae: 0.2666 - mse: 0.1332 - auc_25: 0.8880\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4265 - accuracy: 0.8086 - mae: 0.2739 - mse: 0.1367 - auc_25: 0.8813\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4246 - accuracy: 0.8077 - mae: 0.2728 - mse: 0.1363 - auc_25: 0.8826\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4263 - accuracy: 0.8081 - mae: 0.2741 - mse: 0.1370 - auc_25: 0.8815\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4241 - accuracy: 0.8082 - mae: 0.2722 - mse: 0.1361 - auc_25: 0.8827\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4252 - accuracy: 0.8085 - mae: 0.2734 - mse: 0.1363 - auc_25: 0.8825\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4247 - accuracy: 0.8078 - mae: 0.2730 - mse: 0.1363 - auc_25: 0.8820\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4219 - accuracy: 0.8101 - mae: 0.2712 - mse: 0.1353 - auc_25: 0.8833\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4244 - accuracy: 0.8081 - mae: 0.2722 - mse: 0.1361 - auc_25: 0.8823\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4225 - accuracy: 0.8084 - mae: 0.2714 - mse: 0.1357 - auc_25: 0.8831\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4203 - accuracy: 0.8090 - mae: 0.2702 - mse: 0.1348 - auc_25: 0.8845\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4232 - accuracy: 0.8080 - mae: 0.2724 - mse: 0.1361 - auc_25: 0.8827\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4220 - accuracy: 0.8098 - mae: 0.2709 - mse: 0.1353 - auc_25: 0.8833\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4219 - accuracy: 0.8088 - mae: 0.2707 - mse: 0.1353 - auc_25: 0.8837\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4294 - accuracy: 0.8042 - mae: 0.2772 - mse: 0.1382 - auc_25: 0.8793\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "81\n",
      "80\n",
      "80\n",
      "Epoch 1/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4273 - accuracy: 0.8057 - mae: 0.2750 - mse: 0.1374 - auc_25: 0.8805\n",
      "Epoch 2/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4261 - accuracy: 0.8065 - mae: 0.2742 - mse: 0.1369 - auc_25: 0.8811\n",
      "Epoch 3/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4279 - accuracy: 0.8041 - mae: 0.2758 - mse: 0.1377 - auc_25: 0.8803\n",
      "Epoch 4/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4282 - accuracy: 0.8061 - mae: 0.2753 - mse: 0.1378 - auc_25: 0.8796\n",
      "Epoch 5/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4243 - accuracy: 0.8059 - mae: 0.2740 - mse: 0.1367 - auc_25: 0.8815\n",
      "Epoch 6/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4259 - accuracy: 0.8058 - mae: 0.2745 - mse: 0.1370 - auc_25: 0.8813\n",
      "Epoch 7/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4284 - accuracy: 0.8039 - mae: 0.2757 - mse: 0.1381 - auc_25: 0.8795\n",
      "Epoch 8/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4261 - accuracy: 0.8066 - mae: 0.2746 - mse: 0.1371 - auc_25: 0.8810\n",
      "Epoch 9/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4235 - accuracy: 0.8084 - mae: 0.2722 - mse: 0.1362 - auc_25: 0.8819\n",
      "Epoch 10/10\n",
      "502/502 [==============================] - 9s 18ms/step - loss: 0.4232 - accuracy: 0.8076 - mae: 0.2730 - mse: 0.1361 - auc_25: 0.8825\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "8\n",
      "248/248 [==============================] - 1s 2ms/step - loss: 0.2902 - accuracy: 0.8921 - mae: 0.1564 - mse: 0.0810 - auc_25: 0.7536\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6261\n",
      "Processing molecule 2000/6261\n",
      "Processing molecule 3000/6261\n",
      "Processing molecule 4000/6261\n",
      "Processing molecule 5000/6261\n",
      "Processing molecule 6000/6261\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5862\n",
      "Processing molecule 2000/5862\n",
      "Processing molecule 3000/5862\n",
      "Processing molecule 4000/5862\n",
      "Processing molecule 5000/5862\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5216\n",
      "Processing molecule 2000/5216\n",
      "Processing molecule 3000/5216\n",
      "Processing molecule 4000/5216\n",
      "Processing molecule 5000/5216\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4960\n",
      "Processing molecule 2000/4960\n",
      "Processing molecule 3000/4960\n",
      "Processing molecule 4000/4960\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4847\n",
      "Processing molecule 2000/4847\n",
      "Processing molecule 3000/4847\n",
      "Processing molecule 4000/4847\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5940\n",
      "Processing molecule 2000/5940\n",
      "Processing molecule 3000/5940\n",
      "Processing molecule 4000/5940\n",
      "Processing molecule 5000/5940\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5629\n",
      "Processing molecule 2000/5629\n",
      "Processing molecule 3000/5629\n",
      "Processing molecule 4000/5629\n",
      "Processing molecule 5000/5629\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4418\n",
      "Processing molecule 2000/4418\n",
      "Processing molecule 3000/4418\n",
      "Processing molecule 4000/4418\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6108\n",
      "Processing molecule 2000/6108\n",
      "Processing molecule 3000/6108\n",
      "Processing molecule 4000/6108\n",
      "Processing molecule 5000/6108\n",
      "Processing molecule 6000/6108\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5504\n",
      "Processing molecule 2000/5504\n",
      "Processing molecule 3000/5504\n",
      "Processing molecule 4000/5504\n",
      "Processing molecule 5000/5504\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/4397\n",
      "Processing molecule 2000/4397\n",
      "Processing molecule 3000/4397\n",
      "Processing molecule 4000/4397\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5696\n",
      "Processing molecule 2000/5696\n",
      "Processing molecule 3000/5696\n",
      "Processing molecule 4000/5696\n",
      "Processing molecule 5000/5696\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "class vector created!!\n",
      "class vector created!!\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6531\n",
      "Processing molecule 2000/6531\n",
      "Processing molecule 3000/6531\n",
      "Processing molecule 4000/6531\n",
      "Processing molecule 5000/6531\n",
      "Processing molecule 6000/6531\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6072\n",
      "Processing molecule 2000/6072\n",
      "Processing molecule 3000/6072\n",
      "Processing molecule 4000/6072\n",
      "Processing molecule 5000/6072\n",
      "Processing molecule 6000/6072\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5901\n",
      "Processing molecule 2000/5901\n",
      "Processing molecule 3000/5901\n",
      "Processing molecule 4000/5901\n",
      "Processing molecule 5000/5901\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5226\n",
      "Processing molecule 2000/5226\n",
      "Processing molecule 3000/5226\n",
      "Processing molecule 4000/5226\n",
      "Processing molecule 5000/5226\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5557\n",
      "Processing molecule 2000/5557\n",
      "Processing molecule 3000/5557\n",
      "Processing molecule 4000/5557\n",
      "Processing molecule 5000/5557\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6245\n",
      "Processing molecule 2000/6245\n",
      "Processing molecule 3000/6245\n",
      "Processing molecule 4000/6245\n",
      "Processing molecule 5000/6245\n",
      "Processing molecule 6000/6245\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5796\n",
      "Processing molecule 2000/5796\n",
      "Processing molecule 3000/5796\n",
      "Processing molecule 4000/5796\n",
      "Processing molecule 5000/5796\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5266\n",
      "Processing molecule 2000/5266\n",
      "Processing molecule 3000/5266\n",
      "Processing molecule 4000/5266\n",
      "Processing molecule 5000/5266\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6351\n",
      "Processing molecule 2000/6351\n",
      "Processing molecule 3000/6351\n",
      "Processing molecule 4000/6351\n",
      "Processing molecule 5000/6351\n",
      "Processing molecule 6000/6351\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5835\n",
      "Processing molecule 2000/5835\n",
      "Processing molecule 3000/5835\n",
      "Processing molecule 4000/5835\n",
      "Processing molecule 5000/5835\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/5218\n",
      "Processing molecule 2000/5218\n",
      "Processing molecule 3000/5218\n",
      "Processing molecule 4000/5218\n",
      "Processing molecule 5000/5218\n",
      "Processing dgl graphs from scratch...\n",
      "Processing molecule 1000/6086\n",
      "Processing molecule 2000/6086\n",
      "Processing molecule 3000/6086\n",
      "Processing molecule 4000/6086\n",
      "Processing molecule 5000/6086\n",
      "Processing molecule 6000/6086\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Processing dgl graphs from scratch...\n",
      "Data created!!\n",
      "Data created!!\n",
      "train positive label: 5246 - train negative label: 64838\n",
      "up and down sampling => train positive label: 31476 - train negative label: 32419\n",
      "Test positive label: 616 - Test negative label: 7246\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5708 - accuracy: 0.7172 - mae: 0.3853 - mse: 0.1917 - auc_26: 0.7833\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5201 - accuracy: 0.7564 - mae: 0.3450 - mse: 0.1708 - auc_26: 0.8250\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.5040 - accuracy: 0.7656 - mae: 0.3321 - mse: 0.1646 - auc_26: 0.8369\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4939 - accuracy: 0.7700 - mae: 0.3250 - mse: 0.1609 - auc_26: 0.8438\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4820 - accuracy: 0.7752 - mae: 0.3161 - mse: 0.1567 - auc_26: 0.8516\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4766 - accuracy: 0.7785 - mae: 0.3122 - mse: 0.1545 - auc_26: 0.8555\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4681 - accuracy: 0.7827 - mae: 0.3052 - mse: 0.1513 - auc_26: 0.8611\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4597 - accuracy: 0.7889 - mae: 0.2992 - mse: 0.1483 - auc_26: 0.8661\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4543 - accuracy: 0.7915 - mae: 0.2951 - mse: 0.1463 - auc_26: 0.8695\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4499 - accuracy: 0.7943 - mae: 0.2914 - mse: 0.1446 - auc_26: 0.8723\n",
      "79\n",
      "78\n",
      "78\n",
      "77\n",
      "77\n",
      "77\n",
      "76\n",
      "75\n",
      "71\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4439 - accuracy: 0.7982 - mae: 0.2869 - mse: 0.1424 - auc_26: 0.8757\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4403 - accuracy: 0.7991 - mae: 0.2840 - mse: 0.1411 - auc_26: 0.8780\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4375 - accuracy: 0.8013 - mae: 0.2828 - mse: 0.1401 - auc_26: 0.8794\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4326 - accuracy: 0.8039 - mae: 0.2783 - mse: 0.1383 - auc_26: 0.8824\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4289 - accuracy: 0.8054 - mae: 0.2765 - mse: 0.1370 - auc_26: 0.8844\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4259 - accuracy: 0.8066 - mae: 0.2738 - mse: 0.1358 - auc_26: 0.8862\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4228 - accuracy: 0.8092 - mae: 0.2712 - mse: 0.1349 - auc_26: 0.8877\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4224 - accuracy: 0.8085 - mae: 0.2710 - mse: 0.1347 - auc_26: 0.8879\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4228 - accuracy: 0.8094 - mae: 0.2714 - mse: 0.1349 - auc_26: 0.8876\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4205 - accuracy: 0.8112 - mae: 0.2695 - mse: 0.1341 - auc_26: 0.8885\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "80\n",
      "79\n",
      "79\n",
      "Epoch 1/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4147 - accuracy: 0.8143 - mae: 0.2657 - mse: 0.1320 - auc_26: 0.8920\n",
      "Epoch 2/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4169 - accuracy: 0.8131 - mae: 0.2665 - mse: 0.1328 - auc_26: 0.8907\n",
      "Epoch 3/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4242 - accuracy: 0.8100 - mae: 0.2719 - mse: 0.1353 - auc_26: 0.8864\n",
      "Epoch 4/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4223 - accuracy: 0.8116 - mae: 0.2703 - mse: 0.1346 - auc_26: 0.8875\n",
      "Epoch 5/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4235 - accuracy: 0.8102 - mae: 0.2707 - mse: 0.1349 - auc_26: 0.8869\n",
      "Epoch 6/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4236 - accuracy: 0.8111 - mae: 0.2711 - mse: 0.1347 - auc_26: 0.8869\n",
      "Epoch 7/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4224 - accuracy: 0.8122 - mae: 0.2699 - mse: 0.1344 - auc_26: 0.8875\n",
      "Epoch 8/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4205 - accuracy: 0.8132 - mae: 0.2683 - mse: 0.1336 - auc_26: 0.8882\n",
      "Epoch 9/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4168 - accuracy: 0.8147 - mae: 0.2653 - mse: 0.1322 - auc_26: 0.8904\n",
      "Epoch 10/10\n",
      "500/500 [==============================] - 8s 16ms/step - loss: 0.4118 - accuracy: 0.8171 - mae: 0.2623 - mse: 0.1306 - auc_26: 0.8931\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "81\n",
      "3\n",
      "246/246 [==============================] - 0s 2ms/step - loss: 0.3158 - accuracy: 0.8451 - mae: 0.1996 - mse: 0.0995 - auc_26: 0.7923\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "\n",
    "Epoch_S = 10\n",
    "\n",
    "def evaluate_model(df, k = 10 , shuffle = False, tasks = tox21_tasks):\n",
    "    result =[]    \n",
    "\n",
    "    kf = KFold(n_splits=10, shuffle= shuffle, random_state=None)\n",
    "    \n",
    "    for train_index, test_index in kf.split(df):\n",
    "\n",
    "        train = df.iloc[train_index]\n",
    "        test =  df.iloc[test_index]\n",
    "        \n",
    "        #Calculation of embedded vectors for each class\n",
    "        df_train_positive, df_train_negative = Separate_active_and_inactive_data(train, tasks)\n",
    "        df_test_positive, df_test_negative = Separate_active_and_inactive_data(test, tasks)\n",
    "        \n",
    "        dataset_positive_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_positive]\n",
    "        dataset_negative_train = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_train_negative]    \n",
    "        dataset_positive_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_positive]\n",
    "        dataset_negative_test = [DATASET(d, smiles_to_bigraph, AttentiveFPAtomFeaturizer(), cache_file_path = cache_path) for d in df_test_negative]\n",
    "        \n",
    "        embed_class_tox21_train = get_embedding_vector_class(dataset_positive_train, dataset_negative_train, radius=2, size = 512)\n",
    "        embed_class_tox21_test = get_embedding_vector_class(dataset_positive_test, dataset_negative_test, radius=2, size = 512)\n",
    "       \n",
    "        #create_dataset       \n",
    "        train_notnan = del_nan (train, tasks)\n",
    "        test_notnan = del_nan (test, tasks)\n",
    "\n",
    "        train_dataset = [DATASET(d, smiles_to_bigraph, CanonicalAtomFeaturizer(), cache_file_path = cache_path) for d in train_notnan]\n",
    "        test_dataset = [DATASET(d, smiles_to_bigraph, CanonicalAtomFeaturizer(), cache_file_path = cache_path) for d in test_notnan]\n",
    "          \n",
    "        train_ds = create_dataset_with_gcn(train_dataset, embed_class_tox21_train, gcn_model, tasks)\n",
    "        valid_ds = create_dataset_with_gcn(test_dataset, embed_class_tox21_test, gcn_model, tasks)\n",
    "        \n",
    "        label_pos , label_neg, _ , _ = count_lablel(train_ds)\n",
    "        print(f'train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "        \n",
    "        train_ds = up_and_down_Samplenig(train_ds, scale_downsampling = 0.5)\n",
    "        \n",
    "        label_pos , label_neg , _ , _ = count_lablel(train_ds)\n",
    "        print(f'up and down sampling => train positive label: {label_pos} - train negative label: {label_neg}')\n",
    "\n",
    "        label_pos , label_neg, _ , _ = count_lablel(valid_ds)\n",
    "        print(f'Test positive label: {label_pos} - Test negative label: {label_neg}')\n",
    "\n",
    "        l_train = []\n",
    "        r_train = []\n",
    "        lbls_train = []\n",
    "        \n",
    "        l_valid = []\n",
    "        r_valid = []\n",
    "        lbls_valid = []\n",
    "\n",
    "        for i , data in enumerate(train_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_train.append(embbed_drug[0])\n",
    "            r_train.append(embbed_task)\n",
    "            lbls_train.append(lbl.tolist())\n",
    "        \n",
    "        for i , data in enumerate(valid_ds):\n",
    "            embbed_drug, onehot_task, embbed_task, lbl, task_name = data\n",
    "            l_valid.append(embbed_drug[0])\n",
    "            r_valid.append(embbed_task)\n",
    "            lbls_valid.append(lbl.tolist())\n",
    "\n",
    "        l_train = np.array(l_train).reshape(-1,128,1)\n",
    "        r_train = np.array(r_train).reshape(-1,512,1)\n",
    "        lbls_train = np.array(lbls_train)\n",
    "\n",
    "        l_valid = np.array(l_valid).reshape(-1,128,1)\n",
    "        r_valid = np.array(r_valid).reshape(-1,512,1)\n",
    "        lbls_valid = np.array(lbls_valid)\n",
    "\n",
    "        # create neural network model\n",
    "        siamese_net = siamese_model_Canonical_tox21()\n",
    "        \n",
    "        history = History()\n",
    "        P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "\n",
    "        for j in range(100):\n",
    "            C=1\n",
    "            Before = int(P.history['accuracy'][-1]*100)\n",
    "            for i in range(2,Epoch_S+1):\n",
    "                if  int(P.history['accuracy'][-i]*100)== Before:\n",
    "                    C=C+1\n",
    "                else:\n",
    "                    C=1\n",
    "                Before=int(P.history['accuracy'][-i]*100)\n",
    "                print(Before)\n",
    "            if C==Epoch_S:\n",
    "                break\n",
    "            P = siamese_net.fit([l_train, r_train], lbls_train, epochs = Epoch_S, batch_size = 128, callbacks=[history])\n",
    "        print(j+1)\n",
    "        \n",
    "        score  = siamese_net.evaluate([l_valid,r_valid],lbls_valid, verbose=1)\n",
    "        a = (score[1],score[4])\n",
    "        result.append(a)\n",
    "    \n",
    "    return result\n",
    " \n",
    " \n",
    "scores = evaluate_model(df, 10, False, tox21_tasks)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "#### Dropout = 0.3 and downsampling = 0.5 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(0.8368595242500305, 0.7961744070053101),\n",
       " (0.8724093437194824, 0.7901719808578491),\n",
       " (0.891804575920105, 0.8238518834114075),\n",
       " (0.8417275547981262, 0.8028419017791748),\n",
       " (0.9066919088363647, 0.7792837619781494),\n",
       " (0.8721559047698975, 0.7883057594299316),\n",
       " (0.8473607301712036, 0.7736819386482239),\n",
       " (0.8497915863990784, 0.7874884605407715),\n",
       " (0.892120897769928, 0.7536473274230957),\n",
       " (0.8450775742530823, 0.7922624349594116)]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy= 0.8655999600887299 AUC= 0.7887709856033325 STD_AUC= 0.017466662954986615\n"
     ]
    }
   ],
   "source": [
    "acc = []\n",
    "auc = []\n",
    "for i in scores:\n",
    "    acc.append(i[0])\n",
    "    auc.append(i[1])\n",
    "\n",
    "print(f'accuracy= {np.mean(acc)} AUC= {np.mean(auc)} STD_AUC= {np.std(auc)}')"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [
    "6grIE_JeqkUZ"
   ],
   "provenance": []
  },
  "gpuClass": "standard",
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.16"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
